Frage

Es gibt eine JSLint Option, eine der guten Teile in der Tat, dass „[erfordert] Pars um sofort Anrufungen „, dass die Konstruktion bedeutet

(function () {

  // ...

})();

müßte stattdessen als

geschrieben werden
(function () {

  // ...

}());

Meine Frage ist - kann jemand erklären, warum diese zweite Form besser angesehen werden könnte? Ist es belastbarer? Weniger fehleranfällig? Welchen Vorteil hat es über die erste Form haben?


diese Frage Da fragen, ich bin gekommen, die Bedeutung zu verstehen, eine klare visuelle Unterscheidung zwischen Funktionswerte aufweisen und die Werte von Funktionen. Betrachten wir den Fall, wo das Ergebnis der sofortigen Aufruf ist die rechte Seite eines Zuweisungsausdruck:

var someVar = (function () {

  // ...

}());

Obwohl die äußersten Klammern syntaktisch nicht notwendig sind, gibt die öffnende Klammer einen up-front Hinweis darauf, dass der Wert zugewiesen wird ist nicht die Funktion selbst, sondern das Ergebnis der Funktion aufgerufen wird.

Dies ist ähnlich Crockford Beratung in Bezug auf Aktivierung von Konstruktorfunktionen - gemeint ist als visueller Hinweis zu jedermann dienen auf dem Quellcode sucht

.
War es hilfreich?

Lösung

Von Douglass Crockford Stil Konvention Führer : (Suche nach "aufgerufen sofort")

Wenn eine Funktion sofort aufgerufen werden soll, soll der gesamte Aufrufausdruck in Pars gewickelt werden, so dass es klar ist, dass der Wert erzeugt wird, das Ergebnis der Funktion und nicht die Funktion selbst.

Also, im Grunde, er fühlt es klar den Unterschied zwischen Funktionswerte und die Werte der Funktionen macht. Also, es ist eine stilistische Sache, nicht wirklich ein substanzieller Unterschied in dem Code selbst.

aktualisierten Referenz, alter PPT nicht mehr existiert

Andere Tipps

sofort aufgerufen Anonyme Funktionen eingewickelt bekommen es in Pars, weil:

  1. Sie sind Funktionsausdrücke und verlassen Pars würde dazu führen, dass als Funktionsdeklaration interpretiert werden, die ein Syntaxfehler ist.

  2. Funktionsausdrücke kann nicht mit der Wortfunktion.

  3. starten
  4. Wenn Sie die Funktion Ausdruck einer Variablen zugewiesen, selbst die Funktion nicht zurückgegeben wird, wird der Rückgabewert der Funktion zurückgegeben , damit die Pars zu bewerten, was in ihnen ist und einen Wert erzeugen. wenn die Funktion ausgeführt wird, und die hinteren Pars ..}() die Funktion verursachen sofort auszuführen.

Oder verwenden:

void function () {
...
} ()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top