Ich bin mir nicht sicher, wie ich das erklären soll, aber wenn ich renne
console.log`1`
In Google Chrome bekomme ich Ausgabe wie
console.log`1`
VM12380:2 ["1", raw: Array[1]]
Warum ruft der Backtick die Protokollfunktion auf und warum erstellt er einen Index von raw: Array[1]
?
Eine Frage, die Catgocat im JS-Raum gestellt hat, aber keine Antworten machten Sinn, abgesehen von etwas über das Templieren von Strings , das nicht wirklich passte, warum dies geschieht.
javascript
ecmascript-6
template-strings
template-literals
tagged-templates
Sterling Archer
quelle
quelle
Antworten:
Es ist Tagged Vorlage in ES-6 genannt man mehr über sie zu lesen Hier , lustig fand ich den Link in der Sterne - Bereich des sehr unterhalten.
Der relevante Teil des Codes ist jedoch unten aufgeführt (Sie können grundsätzlich eine gefilterte Sortierung erstellen).
Grundsätzlich wird lediglich die "1" mit der Funktion console.log markiert, wie dies bei jeder anderen Funktion der Fall wäre. Die Tagging-Funktionen akzeptieren analysierte Werte von Vorlagenzeichenfolgen und die Werte separat, für die weitere Aufgaben ausgeführt werden können.
Babel transpiliert den obigen Code in
Wie Sie im obigen Beispiel sehen können, wird der Tagging-Funktion (console.log) nach dem Transpilieren durch babel der Rückgabewert des folgenden transpilierten es6-> 5-Codes übergeben.
Der Rückgabewert dieser Funktion wird an console.log übergeben, die dann das Array druckt.
quelle
Tagged Template Literal:
Die folgende Syntax:
Wird als markiertes Vorlagenliteral bezeichnet.
Die Funktion, die als markiertes Vorlagenliteral aufgerufen wird, empfängt ihre Argumente folgendermaßen:
arg4
(da es nur eine dreifache Zeichenfolgeninterpolation gibt) und daherundefined
protokolliert wird, wenn wir versuchen, zu protokollierenarg4
Verwenden der Restparametersyntax:
Wenn wir vorher nicht wissen, wie oft eine Zeichenfolgeninterpolation in der Vorlagenzeichenfolge stattfindet, ist es oft nützlich, die Syntax des Restparameters zu verwenden. Diese Syntax speichert die verbleibenden Argumente, die die Funktion empfängt, in einem Array. Beispielsweise:
quelle