In js ist der Referenztyp eine Datenstruktur, einschließlich 5 Referenztypen, nämlich Objekt, Daten, Array. Bitte geben Sie den Code gExp, Funktion ein. Heute werden wir über die Datenstruktur von Function sprechen.
In js sind Funktionen tatsächlich Objekte, und jede Funktion ist eine Instanz des Funktionstyps. Wie andere Referenztypen verfügen sie über Eigenschaften und Methoden.
1. Es gibt mehrere Möglichkeiten, Funktionen zu definieren
1) Definition der Funktionsdeklarationssyntax
function sum(num1,num2){ return num1+num2; }
2) Funktionsausdruck
Beachten Sie, dass nach dem Funktionsausdruck ein Semikolon steht
var sum=function(num1,num2){ return num1+num2; }
Verwenden Sie den Funktionskonstruktor
Der Konstruktor kann eine beliebige Anzahl von Parametern empfangen, der letzte Parameter wird jedoch immer als Funktionskörper betrachtet, während die vorherigen Parameter die Parameter auflisten
var sum=new Function("num1","num2","return num1+num2")
Natürlich ist die dritte Methode nicht freundlich und wird nicht empfohlen.
Funktionsnamen sind nur Zeiger auf Funktionen, daher unterscheiden sich Funktionsnamen nicht von anderen Variablen, die Objektzeiger enthalten. Das heißt, eine Funktion kann mehrere Namen haben.
Was ist hier der Unterschied zwischen Funktionsdeklaration und Funktionsausdruck?
Wenn der Parser Daten in die Ausführungsumgebung lädt, behandelt er Funktionsdeklarationen und Funktionsausdrücke unterschiedlich. Der Parser liest zunächst die Funktionsdeklaration und macht den Funktionsdeklarationscode vor jedem Code aufrufbar. Dies nennen wir normalerweise das Heben von Funktionsdeklarationen. Funktionsausdrücke sind unterschiedlich. Sie müssen warten, bis der Funktionsparser den Codeblock ausführt, in dem sie sich befinden, bevor sie tatsächlich ausgeführt werden. Vergleichen Sie die folgenden 2 Beispiele
console.log(sum(10,10)); function sum(n1,n2){ return n1+n2; } 以上代码会正常执行 再看! console.log(sum(10,10)); var sum=function(n1,n2){ return n1+n2; } 以上执行器就会报错!
2 Die Funktion ist nicht überladen
Wenn 2 Namen mit dem Wenn eine Funktion mit demselben Namen deklariert wird, überschreibt die spätere Funktion die vorherige Funktion.
function sun(a){ return a+100; } function sun(a){ return a+200; } var result=sum(2)//202
3. Die internen Attribute der Funktion
umfassen diese Argumente
Keine weiteren Details
4. Funktionsattribute und -methoden
Die Funktion hat 2 Attribute, Länge und Prototyp
Länge gibt die Anzahl der benannten Parameter an, die die Funktion zu empfangen hofft.
function a(name){ //todo } function b(name,age){ //todo } function c(){ //todo } a.length //1 b.length //2 c.length //0
Das Prototyp-Attribut ist für Referenztypen sehr wichtig und wird speziell erläutert, daher werde ich hier nicht auf Details eingehen.
Jede Funktion enthält zwei nicht geerbte Methoden zum Anwenden und Aufrufen
Der Zweck dieser beiden Methoden besteht darin, die Funktion in einem bestimmten Bereich aufzurufen, der eigentlich darin besteht, die Funktion festzulegen Wert, auf den sich dieser im Körper bezieht.
Zuerst. Die apply()-Methode empfängt zwei Parameter, einer ist der Bereich, in dem die Funktion ausgeführt wird, und der andere ist das Parameter-Array. Der zweite Parameter kann eine Instanz des Arrays oder der Argumente sein.
function sum(num1,num2){ return num1+num2; } function test1(a,b){ return sum.apply(this,arguments); } function test2(c,d){ return sum.apply(this.[c,d]); } console.log(test1(1,1)) //2 console.log(test2(1,1)) //2
Es gibt keinen großen Unterschied zwischen der Call-Methode und der Apply-Methode. Der Unterschied besteht darin, dass der zweite Parameter der Aufrufmethode einzeln aufgelistet werden muss.
Der größte Vorteil der Verwendung von Call und Apply zur Erweiterung des Umfangs besteht darin, dass das Objekt an keine Methode gekoppelt ist
Verwandte Empfehlungen:
Detaillierte Erläuterung von JS Funktionsinstanzen
Detaillierte Analyse der Entprellung und Drosselung von JS-Funktionen_Grundkenntnisse
Erklärung der Wertübergabe von JS-Funktionsparametern
Das obige ist der detaillierte Inhalt vonZusammenfassung und Austausch von Wissenspunkten im Zusammenhang mit js-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!