Warum die Ergebnisse variieren, basierend auf geschweiften Klammer die Platzierung?

Warum der code-Schnipsel unten, entnommen aus dieser Artikel, zu unterschiedlichen Ergebnissen führen, durch nur eine einzige änderung in der Platzierung von geschweiften Klammern?

Wenn der öffnenden geschweiften Klammer { ist auf einer neuen Zeile test() zurück undefined, und "Nein - es brach: "undefined" angezeigt wird, in der alert.

JS:

function test()
{
  return
  { /* <--- curly brace on new line */
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript); //does this work...?
} catch (e) {
  alert('no - it broke: ' + typeof r);
}

Wenn die Klammer auf der gleichen Linie wie return, test() gibt ein Objekt zurück, und "fantastisch" ist alarmiert.

JS:

function test()
{
  return { /* <---- curly brace on same line */
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript); //does this work...?
} catch (e) {
  alert('no - it broke: ' + typeof r);
}

  • die semi-insertion-Semantik nach return sind etwas anders als in anderen Orten, und ein line-break "heißt mehr" in diesem Punkt, als wäre es "midstream".
InformationsquelleAutor JustLearn | 2010-09-04
Schreibe einen Kommentar