Verschachtelter Template-String-Fehler in NodeJS

8

Warum führt die folgende Zeile zu einem Laufzeitfehler in Node.js?

%Vor%

wirft:

  

TypeError: "" ist keine Funktion

Getestet mit Node.js-Versionen 4.x, 6.x, 8.x und 9.x

    
vitaly-t 20.12.2017, 10:08
quelle

2 Antworten

4

Die ersten beiden Backticks sind eine leere Zeichenfolge, während die nächsten beiden als getaggte Vorlagenliterale , die die Funktion davor aufrufen wird. Da "" (leere Zeichenfolge) keine aufrufbare Funktion ist, wird ein Fehler ausgegeben.

Backticks, die eine Funktion aufrufen

Um Backticks im Vorlagenliteral zu verschachteln, entschlüsseln Sie sie mit einem Schrägstrich

%Vor%     
Tushar 20.12.2017, 10:12
quelle
3

Es liegt daran, dass Sie zwei Vorlagenliterale unmittelbar nebeneinander haben, ohne dass ein Ausdruck für die Verknüpfung vorhanden ist. Der Parser erkennt das als getaggten Funktionsaufruf wie String.raw'stuff here' . Das erste '' wird ausgewertet, das Ergebnis ist "" . Anschließend versucht die JavaScript-Engine, diese leere Zeichenfolge als Funktion aufzurufen und das verarbeitete Vorlagenliteral zu übergeben. Da die leere Zeichenfolge keine Funktion ist, erhalten Sie eine Fehlermeldung.

Sie erhalten den gleichen Fehler direkter mit ""'' . : -)

    
T.J. Crowder 20.12.2017 10:18
quelle

Tags und Links