Sie müssen wissen, dass in js der Referenztyp eine Datenstruktur ist, einschließlich 5 Referenztypen, nämlich Objekt, Daten, Array, re请输入代码
gExp und Funktion. 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.
Funktionsdeklarationssyntaxdefinition
function sum(num1,num2){ return num1+num2; }
Funktionsausdruck
Beachten Sie, dass nach dem Funktionsausdruck ein Semikolon steht.
var sum=function(num1,num2){ return num1+num2; }
Verwenden Sie den Funktionskonstruktor
使用构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举出了参数
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 beiden 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; } 以上执行器就会报错!
Wenn zwei Funktionen mit demselben Namen deklariert werden, führt dies dazu, dass die letztere Funktion die vorherige Funktion überschreibt.
function sun(a){ return a+100; } function sun(a){ return a+200; } var result=sum(2)//202
einschließlich dieser Argumente
werden nicht im Detail beschrieben
Die Funktion hat 2 Attribute, Länge und Prototyp
Länge gibt das an Die Funktion hofft, einen Namen zu erhalten. Die Anzahl der Parameter.
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 vererbte Methoden zum Anwenden und Aufrufen
Der Zweck dieser beiden Methoden besteht darin, bestimmte Funktionen auszuführen. Rufen Sie eine Funktion auf Eine Domäne legt tatsächlich den Wert fest, auf den sich diese im Funktionskö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
Aufruf method und Die apply-Methode machen keinen großen Unterschied. 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 Bereichs besteht darin, dass das Objekt an keine Methode gekoppelt ist.
Verwandte Empfehlungen:
Detaillierte Erläuterung von JS-Funktionsbeispielen
js Übergabe von Parametern von Funktionen nach Wert
JS-Funktionsaufrufe und Probleme im Zusammenhang mit impliziten Parameterargumenten und dies
Das obige ist der detaillierte Inhalt vonKenntnisse für js-Funktionen erforderlich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!