Heim >Web-Frontend >js-Tutorial >Warum geben JavaScript-Funktionen „undefiniert' zurück, wenn die Return-Anweisung einen Zeilenumbruch aufweist?
JavaScript-Funktionen geben „undefiniert“ zurück, wenn die Rückgabeanweisung zeilenweise unterbrochen ist
In bestimmten Szenarien geben JavaScript-Funktionen möglicherweise nicht erwartete fällige Objekte zurück zu Zeilenumbrüchen nach der Return-Anweisung. Dieses Problem tritt auf, wenn die Objektdefinition durch einen Zeilenumbruch von der Return-Anweisung getrennt ist, wie im Beispielcode zu sehen ist:
function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; } // output = "foo1 = {"msg":"hello1"}" console.log('foo1 = ' , JSON.stringify(foo1())); //output = " foo2 = undefined " console.log('foo2 = ' , JSON.stringify(foo2()));
Der Hauptunterschied zwischen diesen Funktionen ist der Zeilenumbruch zwischen der Return-Anweisung und der Objektdefinition in foo2. Der ASI-Mechanismus (Automatic Semicolon Insertion) von JavaScript fügt nach der Return-Anweisung in foo2 fälschlicherweise ein Semikolon ein, wodurch die Ausführung der Funktion effektiv beendet wird, ohne ein Objekt zurückzugeben. Dies führt bei der Stringifizierung von foo2() zur Ausgabe von „undefiniert“.
Um dieses Problem zu vermeiden, können mehrere Ansätze gewählt werden:
In Fällen, in denen ästhetische Erwägungen oder die Lesbarkeit des Codes das Potenzial für ASI-Probleme überwiegen, können Entwickler Ausdrücke mithilfe des Gruppierungsoperators gruppieren, wie im Beispiel in der Antwort gezeigt. Dieser Ansatz ist jedoch in erster Linie eine Frage der Präferenz und hat keinen Einfluss auf die Funktionalität des Codes.
Das obige ist der detaillierte Inhalt vonWarum geben JavaScript-Funktionen „undefiniert' zurück, wenn die Return-Anweisung einen Zeilenumbruch aufweist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!