Heim > Web-Frontend > js-Tutorial > Warum gibt eine JavaScript-Funktion „Undefiniert' zurück, wenn zwischen der Return-Anweisung und dem zurückgegebenen Objekt ein Zeilenumbruch auftritt?

Warum gibt eine JavaScript-Funktion „Undefiniert' zurück, wenn zwischen der Return-Anweisung und dem zurückgegebenen Objekt ein Zeilenumbruch auftritt?

Linda Hamilton
Freigeben: 2024-10-24 09:08:29
Original
1057 Leute haben es durchsucht

Why Does a JavaScript Function Return Undefined When a Line Break Occurs Between the Return Statement and Returned Object?

JavaScript-Funktion gibt undefiniert zurück, wenn ein Zeilenumbruch zwischen Return-Anweisung und Objekt auftritt

In JavaScript wird von einer Funktion erwartet, dass sie ein Objekt zurückgibt, wenn Auf die Return-Anweisung folgt direkt die Objektdefinition, wie im folgenden Beispiel zu sehen ist:

<code class="javascript">function foo1() {
  return { msg: "hello1" };
}</code>
Nach dem Login kopieren

console.log(JSON.stringify(foo1())); // Ausgabe: { msg: "hello1" }
Wenn jedoch ein Zeilenumbruch die Return-Anweisung von der Objektdefinition trennt, gibt die Funktion undefiniert zurück, wie unten gezeigt:

<code class="javascript">function foo2() {
 return
 { msg: "hello2" };
}</code>
Nach dem Login kopieren

console.log (JSON.stringify(foo2())); // Ausgabe: undefiniert

Dieses Verhalten tritt aufgrund des ASI-Mechanismus (Automatic Semicolon Insertion) in JavaScript auf. ASI geht in bestimmten Kontexten von Semikolons aus, um die ordnungsgemäße Ausführung und Interpretation des Codes sicherzustellen. Im Fall von foo2() wird der Zeilenumbruch als Semikolon interpretiert, das die Return-Anweisung beendet und eine leere Anweisung vor der Objektdefinition einleitet.

Lösung

Um dieses Problem zu beheben, können Sie einen Gruppierungsoperator verwenden, um sicherzustellen, dass die Rückgabeanweisung und die Objektdefinition als ein einziger Ausdruck ausgewertet werden. Dies verhindert, dass ASI eingreift:

<code class="javascript">function foo2() {
  return ({ msg: "hello2" });
}</code>
Nach dem Login kopieren

Ästhetische Überlegungen

Obwohl es wichtig ist, ASI-Probleme zu vermeiden, sollten Sie beim Schreiben Ihres Codes möglicherweise ästhetische Faktoren berücksichtigen. Einige Entwickler bevorzugen es, Ausdrücke aus Gründen der Übersichtlichkeit zu gruppieren oder die Struktur ihres Codes hervorzuheben. Zum Beispiel:

<code class="javascript">return ([
  "ul",
  ["li",
    ["span", {class: "name"}, this.name],
    ["span", {id: "x"}, "x"]
  ]
]);</code>
Nach dem Login kopieren

oder

<code class="javascript">function() {
  return (
    doSideEffects(),
    console.log("this is the second side effect"),
    1 + 1
  );
}</code>
Nach dem Login kopieren

In diesen Beispielen wird der Gruppierungsoperator verwendet, um die Ausdrücke organisiert zu halten und die Lesbarkeit zu verbessern.

Das obige ist der detaillierte Inhalt vonWarum gibt eine JavaScript-Funktion „Undefiniert' zurück, wenn zwischen der Return-Anweisung und dem zurückgegebenen Objekt ein Zeilenumbruch auftritt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage