Funktionen sind die Grundlage für die modulare Programmierung. Um komplexe Ajax-Anwendungen zu schreiben, müssen Sie über ein tieferes Verständnis der Funktionen verfügen.
Funktionen in JavaScript unterscheiden sich von anderen Sprachen. Jede Funktion wird als Objekt verwaltet und ausgeführt. Über die Eigenschaften von Funktionsobjekten können Sie ganz einfach einer Variablen eine Funktion zuweisen oder die Funktion als Parameter übergeben. Bevor wir fortfahren, werfen wir einen Blick auf die Syntax für die Verwendung von Funktionen:
以下是引用片段: function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new Function();
Dies ist die korrekte Syntax für die Deklaration von Funktionen. Sie unterscheiden sich stark von gängigen Funktionen in anderen Sprachen oder den zuvor eingeführten Methoden zur Funktionsdefinition. Warum kann es also in JavaScript so geschrieben werden? Welcher Syntax folgt es? Diese werden im Folgenden beschrieben.
Funktionsobjekt verstehen
Mit dem Schlüsselwort function können Sie eine Funktion definieren, einen Funktionsnamen für jede Funktion angeben und sie über den Funktionsnamen aufrufen. Wenn JavaScript interpretiert und ausgeführt wird, werden Funktionen als Objekt verwaltet, bei dem es sich um das einzuführende Funktionsobjekt handelt.
Funktionsobjekte unterscheiden sich wesentlich von anderen benutzerdefinierten Objekten, z. B. als Datumsobjekt (Date), Array-Objekt (Array) und String-Objekt (String All). sind interne Objekte. Die Konstruktoren dieser integrierten Objekte werden von JavaScript selbst definiert: Durch die Ausführung einer Anweisung wie new Array() zur Rückgabe eines Objekts verfügt JavaScript über einen internen Mechanismus zur Initialisierung des zurückgegebenen Objekts, anstatt dass der Benutzer angibt, wie das Objekt aufgebaut ist .
In JavaScript ist der entsprechende Typ eines Funktionsobjekts „Function“, genau wie der entsprechende Typ eines Array-Objekts „Array“ und der entsprechende Typ eines Datumsobjekts „Date“ ist. Sie können ein Funktionsobjekt über new Function() erstellen. Oder Sie können ein Objekt über das Funktionsschlüsselwort erstellen. Zum besseren Verständnis vergleichen wir die Erstellung von Funktionsobjekten mit der Erstellung von Array-Objekten. Schauen wir uns zunächst das Array-Objekt an: Die folgenden beiden Codezeilen erstellen beide ein Array-Objekt myArray:
以下是引用片段: var myArray=[]; //等价于 var myArray=new Array(); 同样,下面的两段代码也都是创建一个函数myFunction: function myFunction(a,b){ return a+b; } //等价于 var myFunction=new Function("a","b","return a+b");
Durch den Vergleich mit der Konstruktor-Array-Objekt-Anweisung können Sie die Essenz des Funktionsobjekts klar erkennen Die zuvor eingeführte Funktionsdeklaration ist die erste Möglichkeit des obigen Codes. Wenn Sie auf diese Syntax stoßen, wird automatisch ein Funktionsobjekt erstellt und die Funktion wird als internes Objekt gespeichert und ausgeführt. Daraus ist auch ersichtlich, dass ein Funktionsobjektname (Funktionsvariable) und ein gewöhnlicher Variablenname dieselben Spezifikationen haben. Beide können über den Variablennamen auf die Variable verweisen, dem Funktionsvariablennamen können jedoch Klammern und ein Parameter folgen Liste, um den Funktionsaufruf auszuführen.
Es ist nicht üblich, eine Funktion in Form von new Function() zu erstellen, da ein Funktionskörper normalerweise mehrere Anweisungen enthält. Wenn diese als Parameter in Form einer Zeichenfolge übergeben werden, beeinträchtigt dies die Lesbarkeit des Codes wird arm sein. Das Folgende ist eine Einführung in die Verwendungssyntax:
以下是引用片段: var funcName=new Function(p1,p2,...,pn,body);
Die Parametertypen sind alle Zeichenfolgen p1 bis pn repräsentieren die Parameternamenliste der erstellten Funktion, body repräsentiert die Funktionskörperanweisung der erstellten Funktion und funcName ist die erstellte Funktion. Sie können eine leere Funktion erstellen, ohne Parameter anzugeben, und eine unbenannte Funktion erstellen, ohne funcName anzugeben. Natürlich hat eine solche Funktion keine Bedeutung.
Es ist zu beachten, dass p1 bis pn Listen von Parameternamen sind, d. h. p1 kann nicht nur einen Parameter darstellen, sondern auch eine durch Kommas getrennte Parameterliste sein , zum Beispiel Die folgenden Definitionen sind äquivalent:
以下是引用片段: new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c")
JavaScript führt den Funktionstyp ein und stellt Syntax wie new Function() bereit, da Funktionsobjekte den Funktionstyp verwenden müssen, um Eigenschaften und Methoden hinzuzufügen.
Das Wesentliche einer Funktion ist ein internes Objekt, und der JavaScript-Interpreter bestimmt, wie es funktioniert. Die durch den obigen Code erstellte Funktion kann über den Funktionsnamen im Programm aufgerufen werden. Die am Anfang dieses Abschnitts aufgeführten Probleme bei der Funktionsdefinition werden ebenfalls erläutert. Beachten Sie, dass Sie direkt nach der Funktionsdeklaration Klammern hinzufügen können, um anzuzeigen, dass die Funktion unmittelbar nach der Erstellung aufgerufen wird. Beispiel:
以下是引用片段: var i=function (a,b){ return a+b; }(1,2); alert(i);
Dieser Code zeigt, dass der Wert der Variablen i gleich 3 ist. i stellt den zurückgegebenen Wert dar, nicht die erstellte Funktion, da die Klammern „(“ eine höhere Priorität haben als das Gleichheitszeichen „=“. Solcher Code wird möglicherweise nicht häufig verwendet, aber wenn der Benutzer dies möchte, ist dies eine gute Lösung für modulare Design oder um Namenskonflikte zu vermeiden
Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)