Heim > Artikel > Web-Frontend > Wie verzögere ich die Ausführung von Vorlagenliteralen in ES6?
Verzögern der Ausführung von Vorlagenliteralen in ES6
In ES6 bieten Vorlagenliterale eine leistungsstarke Möglichkeit, dynamische Werte in Zeichenfolgen einzubetten. Wenn jedoch die Zeichenfolgeninterpolation innerhalb von Vorlagenliteralen verwendet wird, werden die Werte ausgewertet, bevor das Vorlagenliteral durch benutzerdefinierte Methoden zur Zeichenfolgenbearbeitung verarbeitet wird. Dies kann zu unerwünschten Ergebnissen führen, wenn die Ausführung des Vorlagenliterals verzögert wird.
Um dieses Problem zu beheben, gibt es mehrere Ansätze, die in Betracht gezogen werden können:
1. Verwenden Sie Vorlagenzeichenfolgen
Vermeiden Sie die Verwendung von Zeichenfolgeninterpolation innerhalb von Vorlagenliteralen und entscheiden Sie sich stattdessen wie beabsichtigt für Vorlagenzeichenfolgen. Zum Beispiel:
console.log(`Hello, ${"world"}. This is a ${"test"}`);
2. Verwenden Sie getaggte Vorlagenliterale
Nutzen Sie getaggte Vorlagenliterale, um Code auszuführen, nachdem die Ersetzungen der Vorlagenliterale ausgewertet wurden. Es ist jedoch wichtig zu beachten, dass die Auswechslungen selbst immer noch sofort bewertet werden:
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. Verwenden Sie einfache String-Literale mit benutzerdefinierter String-Manipulation
Erstellen Sie eine benutzerdefinierte String-Manipulationsfunktion, um die Zeichenfolge später im Code zu formatieren, nachdem Werte dynamisch abgerufen wurden:
Das obige ist der detaillierte Inhalt vonWie verzögere ich die Ausführung von Vorlagenliteralen in ES6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!