Funktionsdeklaration
Funktionszuweisungsausdruck
Zuweisungsausdruck der benannten Funktion
Funktionen sind erstklassige Objekte in JavaScript, was bedeutet, dass sie wie jeder andere Wert weitergegeben werden können. Eine häufige Verwendung besteht darin, eine anonyme Funktion als Rückruffunktion an eine asynchrone Funktion zu übergeben.
Funktionsdeklaration
function foo() {}
Die obige Methode wird vor der Ausführung analysiert (gehievt), sodass sie überall im aktuellen Kontext vorhanden ist, auch wenn sie oberhalb des Funktionsdefinitionskörpers aufgerufen wird. Das ist richtig zu.
foo(); // 正常运行,因为foo在代码运行前已经被创建 function foo() {
Funktionszuweisungsausdruck
var foo = function() {};
In diesem Beispiel wird der Variablen foo eine anonyme Funktion zugewiesen.
foo; // 'undefined' foo(); // 出错:TypeError var foo = function() {};
Da var eine Deklarationsanweisung definiert, wird die Variable foo analysiert, bevor der Code ausgeführt wird, sodass die Variable foo bereits definiert wurde, wenn der Code ausgeführt wird.
Da die Zuweisungsanweisung jedoch nur zur Laufzeit ausgeführt wird, ist der Wert von foo standardmäßig auf undefiniert, bevor der entsprechende Code ausgeführt wird.
Zuweisungsausdruck einer benannten Funktion
Ein weiterer Sonderfall besteht darin, die benannte Funktion einer Variablen zuzuweisen.
var foo = function bar() { bar(); // 正常运行 } bar(); // 出错:ReferenceError
bar ist außerhalb der Funktionsdeklaration unsichtbar, da wir die Funktion foo zugewiesen haben, sie ist jedoch immer noch innerhalb von bar sichtbar. Dies liegt an der Benennungsverarbeitung von JavaScript. Funktionsnamen sind innerhalb von Funktionen immer sichtbar.
Hinweis: In IE8- und niedrigeren Browsern ist bar auch extern sichtbar, da der Browser den benannten Funktionszuweisungsausdruck falsch analysiert und ihn in zwei Funktionen foo und bar analysiert
Das Obige ist der Inhalt der erweiterten JavaScript-Reihe – Funktionsdeklarationen und Ausdrücke. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!