Dans ES6, les littéraux de modèles permettent l'interpolation de chaînes avec des valeurs dynamiques. Cependant, nous pouvons parfois devoir différer l'évaluation du modèle littéral à plus tard pour incorporer des éléments dynamiques.
Question : Comment pouvons-nous écrire du code pour différer l'évaluation d'un modèle ES6 littéral jusqu'à ce que nous ayons créé dynamiquement les éléments utilisés pour l'interpolation ?
Réponse : Il existe plusieurs approches pour y parvenir ceci :
Utilisation de chaînes simples :
Utilisez des littéraux de chaîne simples au lieu de chaînes de modèles pour éviter une évaluation immédiate. Les valeurs d'espace réservé d'interpolation peuvent être formatées à l'aide d'une méthode de prototype personnalisée comme celle-ci :
String.prototype.format = function() { var args = arguments; return this.replace(/$\{p(\d)\}/g, function(match, id) { return args[id]; }); }; console.log("Hello, ${p0}. This is a ${p1}".format("world", "test"));
Utilisation de littéraux de modèle balisés :
Littéraux de modèle balisés proposer une méthode alternative. Cependant, il est important de noter que les substitutions sont toujours évaluées sans permettre l'interpolation d'identifiants comme "p0".
function formatter(literals, ...substitutions) { return { format: function() { var out = []; for(var i=0, k=0; i < literals.length; i++) { out[k++] = literals[i]; out[k++] = arguments[substitutions[i]]; } out[k] = literals[i]; return out.join(""); } }; } console.log(formatter`Hello, <pre class="brush:php;toolbar:false">console.log(`Hello, ${"world"}. This is a ${"test"}`);
Éviter le report :
Pensez à utiliser les chaînes de modèles comme prévu, sans aucune fonction de formatage ni report. Les chaînes de modèles offrent un moyen concis et efficace d'interpoler des valeurs dynamiques sans complexité supplémentaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!