Das Funktionsobjekt in JS ist eine faszinierende Sache, aber es ist oft verwirrend, weil es zu flexibel ist.
Lassen Sie mich zuerst einen Code -Snippet zeigen.
var scope = "global"; Funktion ConstructFunction () {var scope = "local"; neue Funktion zurückgeben ("Return Scope");} constructfunction () () (); Funktion ConstructFunction2 () {var Scope = "local"; return function () {return Scope;}} constructFunction2 () ();Was ist dein erstes Gefühl, wenn du diese beiden siehst? Alle kehren "lokal" zurück? ? Wenn dies der Fall ist, müssen Sie sich die folgende Erklärung genauer ansehen. constructfunction2 () sollte leicht zu verstehen sein, und ich werde hier nicht auf Details eingehen. Als nächstes werde ich mich auf die Situation der Konstruktion () konzentrieren.
Der Function () -Konstruktor wird hier verwendet. Obwohl der Function () -Konstruktor nicht sehr häufig verwendet wird, ist es dennoch notwendig, sie zu verstehen.
Unabhängig davon, ob es sich um eine Funktionsdefinitionsanweisung oder eine Funktion direkt quantitativer Ausdruck handelt, muss die Funktionsdefinition das Schlüsselwort Funktion () verwenden. Einzelne Funktionen können auch durch den Function () -Konstruktor definiert werden, wie z. B.:
var f = neue Funktion ("x", "y", "return x*y");Der tatsächliche Effekt dieser Zeile entspricht der folgenden Codezeile.
var f = function (x, y) {x*y};Der Konstruktor der Funktion () kann eine beliebige Anzahl von String -Argumenten übergeben, und der durch das letzte Argument dargestellte Text ist der Funktionskörper; Es kann jede JavaScript -Anweisung enthalten, und jede Aussage wird durch ein Semikolon geteilt. Alle anderen Argumentationsketten, die in den Konstruktor übergeben werden, sind Zeichenfolgen, die den Namen der Funktion angeben. Wenn die definierte Funktion keine Parameter enthält, übergeben Sie einfach eine String -Funktionskörper an den Konstruktor.
Es gibt mehrere Punkte, die auf den Function () -Konstruktor besondere Aufmerksamkeit schenken müssen:
1. Funktion () Konstruktor ermöglicht es JavaScript, Funktionen zur Laufzeit dynamisch zu erstellen und zu kompilieren.
2. Jedes Mal, wenn der Function () -Konstruktor aufgerufen wird, wird der Funktionskörper analysiert und ein neues Funktionsobjekt erstellt. Wenn dieser Konstruktor in einer Schleife oder in mehreren Aufrufen ausgeführt wird, wird die Ausführungseffizienz beeinträchtigt. Im Gegensatz dazu werden verschachtelte Funktionen und Funktionsdefinitionsausdrücke in Schleifen nicht jedes Mal neu kompiliert, wenn sie ausgeführt werden.
2. Der letzte Punkt ist auch ein sehr wichtiger Punkt für den Function () -Konstruktor, dh die von ihm erstellten Funktionen verwenden keinen lexikalischen Bereich. Im Gegenteil, die Kompilierung des Funktionskörpercodes wird immer auf der obersten Funktion ausgeführt. Nach dem Lesen ist die obige Funktion Constructfunction () (); Es sollte leicht zu verstehen sein, "global" zurückzukehren?
Das obige ist der vom Editor eingeführte JS Function () -Konstruktor. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!