Definition der JavaScript -Funktion
1: Rufen Sie die Schlüsselwortfunktion auf, um zu konstruieren, z. B.:
Funktionsabstand (x1, x2, y1, y2)
{{{{
var dx = x2-x1;
var dy = y2-y1;
Return math.sqrt (dx*dx+dy*dy);
}
2: Verwenden Sie Funion () Konstruktionsfunktion
var f = neue Funktion*"x", "y", "return x*y");
Diese Codezeile erstellt eine neue Funktion, die der Funktionsdefinition der Syntax -Definition, mit der Sie vertraut sind, im Grunde entspricht:
Funktion f (x, y)
{{{{
Return x*y;
}
Functino () Konstruktor kann alle mehrere String -Parameter akzeptieren. Der Hauptteil der Funktion während des letzten Parameters, der jede JavaScript -Anweisung enthalten kann, trennen die Zahl zwischen Anweisungen. Andere Parameter werden verwendet, um die Zeichenfolge des von der Funktion definierten Formularparameternamens zu erklären. Wenn Sie die Funktion ohne Parameter definieren, können Sie nur eine Zeichenfolge (dh das Thema der Funktion) an den Konstruktor übergeben.
Beachten Sie, dass keiner der an die Konstruktor -Funktion () übergebenen Parameter verwendet wird, um den zu erstellenden Funktionsnamen zu erklären. Die von Function () erstellte Usen -nicht -auferlegte Funktion wird manchmal zu einer "anonymen Funktion".
Möglicherweise möchten Sie wissen, wie die Funktion des Funktion () () der Konstruktor verwendet wird. Verwenden Sie nicht nur die Funktionsanweisung, um alle Funktionen zu definieren? Der Grund dafür ist, dass der Function () -Konstruktor es uns ermöglicht, eine Funktion dynamisch zu erstellen und zu kompilieren, die uns nicht auf die von der Funktionserklärung vorgezogene Funktionskörper beschränkt. Der negative Auswirkungen, der dazu führt, besteht darin, dass der Funktionskonstruktor jedes Mal, wenn eine Funktion aufgerufen wird, sie kompilieren muss. Daher sollten wir diesen Konstruktor nicht häufig in einem Schleifenkörper oder in den häufig verwendeten Funktionen nennen.
Ein weiterer Grund mit der Funktion der Funktion () ist, dass sie die Funktion als Teil des Ausdrucks von JavaScript definieren kann, anstatt eine Aussage zu definieren.
3: Funktion Direkte Menge
Funktionsdirekte Menge ist ein Ausdruck, der die anonyme Funktion definiert. Die Syntax der Funktion Direct -Menge ist der Funktionserklärung sehr ähnlich, wird jedoch als Ausdruck, nicht als Anweisung verwendet und muss nicht den Funktionsnamen angeben. Der folgende drei -Linien -Code verwendet die Funktion (Function (), den Function () -Konstruktor und die Funktion der Funktion, um drei grundsätzlich dieselben Funktionen zu definieren:
Funktion f (x) {return x*x};
var f = neue Funktion ("x", "return x*x;");
var f = function (x) {reurn x*x};
Obwohl die Funktion direkt eine unbenannte Funktion erstellt, sieht ihre Syntax auch fest, dass sie den Funktionsnamen angeben kann, der beim Schreiben und Aufrufen seiner eigenen rekursiven Funktion sehr nützlich ist. Zum Beispiel:
var f = function fact (x) {if (x <= 1) return 1;
Der obige Code definiert eine unbenannte Funktion und wird in Variable F für seine Referenz gespeichert. Es wird nicht wirklich eine Funktion namens Fact () erstellt, aber die Funktion kann den Namen verwenden, um sich selbst zu zitieren. Es ist jedoch zu beachten, dass die vorherige Version von JavaScript1.5 die Funktionsfunktion dieses Namens nicht korrekt implementiert hat.
Die Verwendung der Funktion der Funktion ist der Methode zum Erstellen einer Funktion mit der Funktion der Funktion () Konstruktion sehr ähnlich. Da sie alle durch den Ausdruck von JavaScript erstellt werden, die nicht durch Aussagen erstellt werden, ist die Art und Weise, sie zu verwenden, flexibler, insbesondere für Funktionen, die nur einmal verwendet werden und nicht benannt werden müssen. Beispielsweise kann eine Funktion, die durch eine Funktion Direct Messing Expression angegeben ist, in einer Variablen gespeichert, an andere Funktionen übergeben und sogar direkt aufgerufen werden:
a [0] = Funktion (x) {return x*x;};
A.Sort (Funktion (a, b) {return ab;});
var Tensquared = (Funktion (x) {return x*x;});
Wie der Function () -Konstruktor erstellt die Funktion direkt eine unbenannte Funktion und speichert diese Funktion nicht automatisch in das Attribut. Im Vergleich zum Function () -Konstruktor hat die direkte direkte Menge einen wichtigen Vorteil. Das Thema einer von Function () Constructing -Funktion erstellten Funktion muss durch eine Zeichenfolge erklärt werden, und diese Möglichkeit, eine lange und komplexe Funktion auszudrücken, ist ungeschickt. Der Hauptkörper der Funktion wird jedoch von der Standard -JavaScript -Syntax verwendet. Und der direkte Betriebsbetrag wird einmal aufgelöst, und der JavaScript -Code, der an die Funktion () () als Zeichenfolge an den Funktion () übergeben wird, wird nur jedes Mal, wenn der Konstruktor aufgerufen wird, analysiert und zusammengestellt.
In JavaScript1.1 kann die Konstruktorfunktion () zur Definition von Funktionen in JavaScript1.2 und nachfolgenden Versionen verwendet werden, die Funktion direkt zum Konstruktion der Funktion verwendet werden. Sie sollten auf die wichtigen Unterschiede zwischen diesen beiden Methoden achten.
Zunächst ermöglicht die Konstruktorfunktion () während der Laufzeit eine dynamische Erstellung und Kompilierung des JavaScript -Code. Die direkte Größe der Funktion ist jedoch ein statischer Bestandteil der Funktionsstruktur, genau wie die Funktionsanweisung.
Zweitens, als das unvermeidliche Ergebnis des ersten Unterschieds, wird jedes Mal, wenn die Konstruktorfunktion () verwendet wird, um die Funktionsbehörde zu analysieren und ein neues Osthan -Zahlen -Objekt zu erstellen. Wenn der Ruf des Konstruktors in einem Zyklus erscheint oder in einer häufig genannten Funktion erscheint, ist die Effizienz dieser Methode sehr gering. Andererseits wird die verschachtelte Funktion, die direkt im Zyklus und in den Funktionen erscheinen kann, bei jedem Aufruf nicht umkompiliert, und ein neues Funktionsobjekt wird nicht erstellt, wenn ein direkter Betriebsbetrag begegnet ist.
Der dritte Punkt zwischen der Menge zwischen dem Function () -Konstruktor und der Funktion ist, dass die von der Konstruktor -Funktion () erstellte Funktion den Phrasenbereich nicht verwendet. Code wird erklärt:
var y y = "global";
Funktionskonstruktionsfunktion () ()
{{{{
var y y = "lokal";
Neue Funktion zurückgeben ("return y");
}
// In dieser Codezeile wird "global" angezeigt, da die von der Funktion () zurückgegebene Funktion den lokalen Bereich nicht verwendet.
// Wenn Sie einen Funktionsbetrag verwenden, kann diese Codezeile "lokal" angezeigt werden.
Alarm (Konstruktion ());