Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erklärung von Ausdrücken und Konstruktoren im Javascript-Grundlagen-Tutorial

伊谢尔伦
Freigeben: 2017-07-25 10:05:28
Original
1380 Leute haben es durchsucht

Funktionsdefinitionsausdruck

Im Ausdrucksmodus definierte Funktion, der Name der Funktion ist optional

var functionName = function([arg1 [,arg2 [...,argn]]]){
    statement;
}
var functionName = function funcName([arg1 [,arg2 [...,argn]]]){
    statement;
}
Nach dem Login kopieren

Anonyme Funktion (anonyme Funktion) wird auch Lambda-Funktion genannt ohne Bezeichner nach dem Funktionsschlüsselwort

Im Allgemeinen ist beim Definieren von Funktionen in Ausdrücken kein Name erforderlich, wodurch der Code, der sie definiert, kompakter wird. Funktionsdefinitionsausdrücke eignen sich besonders zum Definieren von Funktionen, die nur einmal verwendet werden

var tensquared = (function(x) {return x*x;}(10));
Nach dem Login kopieren

Während ein Funktionsdefinitionsausdruck einen Namen enthält, enthält der lokale Gültigkeitsbereich der Funktion einen an das Funktionsobjekt gebundenen Namen. Tatsächlich wird der Name der Funktion zu einer lokalen Variablen innerhalb der Funktion

var test = function fn(){
   return fn;
}
console.log(test);//fn(){return fn;}
console.log(test());//fn(){return fn;}
console.log(test()());//fn(){return fn;}
Nach dem Login kopieren

. Bei benannten Funktionsausdrücken entspricht der Funktionsname dem formalen Parameter des Funktionsobjekts und kann nur innerhalb verwendet werden die Funktion; Der Variablenname entspricht dem tatsächlichen Parameter des Funktionsobjekts. Er kann sowohl innerhalb als auch außerhalb der Funktion verwendet werden.

var test = function fn(){   
  return fn === test;
}
console.log(test());//true
console.log(test === fn);//ReferenceError: fn is not defined
Nach dem Login kopieren

Die Funktion definiert ein nicht standardmäßiges Namensattribut, durch das Auf den von der angegebenen Funktion angegebenen Namen kann zugegriffen werden. Der Wert dieses Attributs entspricht immer dem Bezeichner, der dem Funktionsschlüsselwort folgt. Das Namensattribut der anonymen Funktion ist leer

//IE11-浏览器无效,均输出undefined
//chrome在处理匿名函数的name属性时有问题,会显示函数表达式的名字
function fn(){};
console.log(fn.name);//'fn'
var fn = function(){};
console.log(fn.name);//'',在chrome浏览器中会显示'fn'
var fn = function abc(){};
console.log(fn.name);//'abc'
Nach dem Login kopieren

Funktionskonstruktor

Der Funktionskonstruktor empfängt eine beliebige Anzahl von Parametern, aber der letzte Parameter wird immer als Funktionskörper betrachtet und die vorherigen Parameter zählen die Parameter der neuen Funktion auf

var functionName = new Function(['arg1' [,'arg2' [...,'argn']]],'statement;');
Nach dem Login kopieren

[Hinweis] Der Funktionskonstruktor kann dies nicht Geben Sie einen Funktionsnamen an, der erstellt wird. Ist eine anonyme Funktion

Technisch gesehen ist dies ein Funktionsausdruck. Dies wird jedoch nicht empfohlen, da diese Syntax dazu führt, dass der Code zweimal analysiert wird. Das erste Mal besteht darin, den regulären Javascript-Code zu analysieren, und das zweite Mal besteht darin, die an den Konstruktor übergebene Zeichenfolge zu analysieren, was sich auf die Leistung auswirkt.

var sum = new Function('num1','num2','return num1 + num2');
//等价于
var sum = function(num1,num2){    
  return num1+num2;
}
Nach dem Login kopieren

Vom Function()-Konstruktor erstellte Funktionen werden immer kompiliert. Ausführen im globalen Maßstab. Daher ähnelt der Function()-Konstruktor dem im globalen Bereich ausgeführten eval()

var test = 0;
function fn(){
    var test = 1;
    return new Function('return test');
}
console.log(fn()());//0
Nach dem Login kopieren

[Hinweis] Nicht alle Funktionen können Konstruktoren werden

var o = new Math.min();//Uncaught TypeError: Math.min is not a constructor
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung von Ausdrücken und Konstruktoren im Javascript-Grundlagen-Tutorial. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!