In ES6 ermöglichen Vorlagenliterale die String-Interpolation mit dynamischen Werten. Manchmal müssen wir jedoch möglicherweise die Auswertung des Vorlagenliterals auf einen späteren Zeitpunkt verschieben, um dynamische Elemente einzubinden.
Frage: Wie können wir Code schreiben, um die Auswertung einer ES6-Vorlage zu verschieben literal, bis wir die für die Interpolation verwendeten Elemente dynamisch erstellt haben?
Antwort: Es gibt mehrere Ansätze, um dies zu erreichen:
Verwenden einfacher Zeichenfolgen:
Verwenden Sie einfache Zeichenfolgenliterale anstelle von Vorlagenzeichenfolgen, um eine sofortige Auswertung zu vermeiden. Die Interpolationsplatzhalterwerte können mit einer benutzerdefinierten Prototypmethode wie folgt formatiert werden:
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"));
Verwendung getaggter Vorlagenliterale:
Tagged-Vorlagenliterale Bieten Sie eine alternative Methode an. Es ist jedoch wichtig zu beachten, dass Ersetzungen weiterhin ausgewertet werden, ohne dass eine Interpolation von Bezeichnern wie „p0“ möglich ist.
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"}`);
Verzögerung vermeiden:
Erwägen Sie die bestimmungsgemäße Verwendung von Vorlagenzeichenfolgen ohne Formatfunktion oder Verzögerung. Vorlagenzeichenfolgen bieten eine prägnante und effiziente Möglichkeit, dynamische Werte ohne zusätzliche Komplexität zu interpolieren.
Das obige ist der detaillierte Inhalt vonWie verschiebt man die Auswertung von ES6-Vorlagenliteralen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!