Wenn Sie in JavaScript eine Funktion erstellen müssen, gibt es zwei Methoden: Funktionale Erklärung, Funktionsausdruck, jedes Schreiben lautet wie folgt:
// Methode 1: Funktionale Deklaration foo () {} // Methode 2: Funktionsausdruck var foo = function () {};Darüber hinaus gibt es einen selbstversorgten Funktionsausdruck, der hauptsächlich zur Erstellung eines neuen Bereichs verwendet wird.
(function () {// var x = ...}) ();Diese selbst -executierte Funktionsexpression wird als zweite Methode der beiden oben genannten Methoden klassifiziert, die auch als funktionelle Expression angesehen werden kann.
Die Methoden 1 und Methode II haben eine Funktion erstellt und sie Foo genannt, es gibt jedoch Unterschiede zwischen den beiden. Es gibt einen Mechanismus, der im JavaScript -Interpreter vorhanden ist, der gefördert wird (heben), was bedeutet, dass die Aussage einer Variablen (Funktion) in die Spitze des Geltungsbereichs gefördert wird.
Zum Beispiel das folgende Codesegment:
alert (foo); // Funktion bar_fn () {}Die Ausgabergebnisse sind Funktionen foo () {}, undefiniert, Funktionen foo () {} und Funktions bar_fn () {}.
Es ist zu erkennen, dass die Aussage des FOOs nach der Warnung geschrieben ist und immer noch korrekt aufgerufen werden kann, da der JavaScript -Dolmetscher sie auf die Vorderseite hebt und die Funktionsleiste, die durch den Funktionsausdruck erstellt wurde, diese Behandlung nicht genießt.
Wird die Bar der Praxis verbessert?
Daher kann die Reihenfolge des obigen Code der JavaScript -Engine wie folgt aussehen:
Notiz:
Wenn Sie in JavaScript eine Funktion erstellen, gibt es streng genommen eine andere Methode, die als "Funktionsstrukturmethode" bezeichnet wird:
var foo = function ('alert ("hi!");'); Diese Methode verwendet eine Zeichenfolge als Parameter, um einen Funktionskörper zu bilden. Bei dieser Methode wird die Ausführungseffizienz jedoch abgezinst, und es scheint, dass die Parameter nicht übergeben werden können. Daher ist es besser, weniger zu verwenden.