Backticks und Funktionsaufrufe in JavaScript
Bei der Verwendung von Backticks () zum Umschließen eines Zeichenfolgenliterals in JavaScript kann es zu unerwartetem Verhalten kommen, z Eine getaggte Vorlage wird aufgerufen. In diesem Fall führte console.log1 zur Ausgabe „console.log1`nVM12380:2 [„1“, raw: Array[1]]“.
Tagged Templates in ES6
Die Erklärung liegt im Konzept der getaggten Vorlagen, die in ES6 eingeführt wurden. Mit getaggten Vorlagen können Sie eine Vorlagenzeichenfolge mit einer Funktion kennzeichnen. Wenn die Zeichenfolge mit der Funktion verwendet wird, empfängt die Funktion die analysierten Werte der Vorlagenzeichenfolge und die Werte in der Zeichenfolge.
Funktion als Tag
In der Beispiel: console.log wird als Tag-Funktion verwendet. Der Aufruf erfolgt effektiv mit den geparsten String-Werten und dem Literal-String-Wert als Array. Die Funktion kann diese Werte dann manipulieren und eine neue Zeichenfolge zurückgeben oder sie zur weiteren Verarbeitung weitergeben.
Zurückgegebenes Array
Die Funktion console.log führt keine besonderen Aktionen aus Verarbeitung der Werte, sodass das Array zurückgegeben wird, das den Literalzeichenfolgenwert enthält. Dieses Array wird dann von console.log ausgedruckt, was zu der von Ihnen beobachteten Ausgabe führt.
Transpilation und Template-Literale
Bei Verwendung moderner JavaScript-Funktionen wie Template-Literale mit älteren Browser, Babel oder ähnliche Transpiler werden verwendet, um den Code in ES5 zu konvertieren, was von diesen Browsern unterstützt wird. Der transpilierte Code für das Beispiel wäre:
console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
Dieser transpilierte Code erstellt ein Array mit der Literalzeichenfolge „1“ und übergibt es als Argument an console.log.
Daher gilt: Die Backtick-Notation 1 ruft console.log als getaggte Vorlagenfunktion auf, die ein Array zurückgibt, das dann ausgedruckt wird. Die Raw-Eigenschaft im zurückgegebenen Array enthält den Literal-String-Wert.
Das obige ist der detaillierte Inhalt vonWarum gibt „console.log\\`1' ein Array in JavaScript zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!