Maison >interface Web >js tutoriel >Comment différer l'exécution littérale d'un modèle dans ES6 ?
Différer l'exécution d'un littéral de modèle dans ES6
Dans ES6, les littéraux de modèle constituent un moyen puissant d'intégrer des valeurs dynamiques dans des chaînes. Toutefois, lors de l'utilisation de l'interpolation de chaîne dans les littéraux de modèle, les valeurs sont évaluées avant que le littéral de modèle ne soit traité par des méthodes de manipulation de chaîne personnalisées. Cela peut conduire à des résultats indésirables lors du report de l'exécution du modèle littéral.
Pour résoudre ce problème, plusieurs approches peuvent être envisagées :
1. Utiliser des chaînes de modèles
Évitez d'utiliser l'interpolation de chaînes dans les littéraux de modèles et optez plutôt pour des chaînes de modèles comme prévu. Par exemple :
console.log(`Hello, ${"world"}. This is a ${"test"}`);
2. Utiliser des littéraux de modèle balisés
Exploitez les littéraux de modèle balisés pour exécuter du code une fois que les substitutions de littéraux de modèle ont été évaluées. Cependant, il est important de noter que les substitutions elles-mêmes sont toujours évaluées immédiatement :
function formatter(literals, ...substitutions) { return { format: function() { // Implementation for value substitution and template literal concatenation } }; } console.log(formatter`Hello, <pre class="brush:php;toolbar:false">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"));. This is a `.format("world", "test"));
3. Utiliser des littéraux de chaîne simples avec une manipulation de chaîne personnalisée
Créez une fonction de manipulation de chaîne personnalisée pour formater la chaîne plus tard dans le code, une fois les valeurs récupérées dynamiquement :
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!