Heim  >  Artikel  >  Web-Frontend  >  Anmerkungen zur Javascript-Studie: Funktionen (1): Funktionsdeklaration und Funktionsausdruck_Grundkenntnisse

Anmerkungen zur Javascript-Studie: Funktionen (1): Funktionsdeklaration und Funktionsausdruck_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:43:181277Durchsuche

Funktionsdeklaration

function foo() {}

Funktion foo wird angehoben, bevor das gesamte Programm ausgeführt wird, sodass sie im gesamten Bereich verfügbar ist, in dem die Funktion foo definiert ist. Es gibt kein Problem, selbst wenn es aufgerufen wird, bevor die Funktion definiert ist.

foo(); // Works because foo was created before this code runs
function foo() {}

Da ich vorhabe, einen speziellen Artikel über den Umfang zu schreiben, werde ich hier nicht auf Details eingehen.

Funktionsausdruck

Für Funktionsdeklarationen ist der Name der Funktion erforderlich, für Funktionsausdrücke ist er jedoch optional. Daher werden anonyme Funktionsausdrücke und benannte Funktionsausdrücke angezeigt. Wie folgt:

Funktionsdeklaration: function functionName (){ }
Funktionsdeklaration: function functionName[optional](){ }
Dann weiß ich, dass es sich um einen Funktionsausdruck handeln muss, wenn kein Funktionsname vorhanden ist. Wie kann ich jedoch beurteilen, ob ein Funktionsname vorhanden ist?
Javascript legt fest, dass es sich um einen Funktionsausdruck handelt, wenn der gesamte Funktionskörper Teil eines Ausdrucks ist, andernfalls um eine Funktionsdeklaration. Das Folgende ist der Ausdruck:

var fuc = foo(){}

Lassen Sie uns noch ein paar extreme Ausdrucksbeispiele nennen:

!function foo(){}
true && function foo(){}

Die obige Anweisung dient nur zur Unterscheidung von Funktionsausdrücken und wird im Allgemeinen nicht so geschrieben. Dann nutzen Sie ein Vergleichsbeispiel, um den Effekt zu sehen:

foo1();//foo1 is not defined 
foo2();//works because foo2 was created before this code runs
!function foo1() {
  alert('foo1 works');
};
function foo2() {
  alert('foo2 works');
};

Anonymer Funktionsausdruck

var foo = function() {};

Das obige Beispiel weist der Variablen foo eine anonyme Funktion zu.

foo; // 'undefined'
foo(); // this raises a TypeError
var foo = function() {};

Da var eine Deklaration ist, wird die Variable foo hier angehoben, sodass die Variable foo bei der Ausführung des Programms aufrufbar ist.
Da die Zuweisungsanweisung jedoch erst zur Laufzeit wirksam wird, ist der Wert der Variablen foo undefiniert.

Benannter Funktionsausdruck

Ein weiterer Diskussionspunkt ist die Zuweisung benannter Funktionen.

var foo = function bar() {
  bar(); // Works
};
bar(); // ReferenceError

Hier wird die benannte Funktion bar der Variablen foo zugewiesen, sodass sie außerhalb der Funktionsdeklaration nicht sichtbar ist, aber dennoch innerhalb der bar-Funktion aufgerufen werden kann. Dies liegt an der Art und Weise, wie Javascript benannte Funktionen verarbeitet. Der Name einer Funktion ist im Gültigkeitsbereich innerhalb der Funktion immer gültig.

Stellungnahme:
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