Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung des Funktionstyps in javascript_javascript skills

Detaillierte Erläuterung des Funktionstyps in javascript_javascript skills

WBOY
Freigeben: 2016-05-16 16:02:00
Original
1353 Leute haben es durchsucht

Funktionstyp

Der Funktionstyp ist zweifellos eine sehr wichtige Sache in js.

1. Dieses Ding ist zunächst einmal ein Objekt, was bedeutet, dass es ein Referenztyp ist. Aussage: Wenn ich höre, dass es ein Objekt ist, habe ich die Illusion, dass seine Basisklasse ein Objekt ist. Nein,

Es und Objekt sind zwei unabhängige Dinge. Wenn Sie eine Funktion eingeben, wird eine Funktion und kein Objekt zurückgegeben

 2. Jede Funktion ist eine Instanz des Funktionsobjekts, das dieselben Eigenschaften und Methoden wie andere Referenzobjekte hat. Da es sich um ein Objekt handelt, ist der Funktionsname ein Zeiger auf das Funktionsobjekt

Syntaxunterstützung für Funktionsdeklarationen:

<script>

  //方式1
  function fun(num1,num2){
    return num1+num2;
  }
  
  //方式2
  var fun=function(num1,num2){
    return num1+num2;
  };

  //方式3
  var fun=new Function("n1","n2","return n1+n2");
  
</script>

Nach dem Login kopieren

Erklärung: Es gibt drei Möglichkeiten, eine Funktion zu deklarieren, diese sind jedoch unterschiedlich.

Methode 1 wird als Deklaration einer Funktion verstanden, und Methode 2 und 3 werden als Funktionsausdrücke verstanden. (Methode 3 wird nicht empfohlen, da sie dazu führt, dass der Code zweimal analysiert wird. Zuerst wird der reguläre ECMAScript-Code interpretiert und dann werden die eingehenden Parameter interpretiert. Dies

Schreiben, die Anzahl der Parameter kann N sein, aber der letzte Parameter wird als Funktionskörper betrachtet)

Der Hauptgrund für den Unterschied besteht darin, dass der JS-Parser Funktionsdeklarationen und Funktionsausdrücke unterschiedlich analysiert. Der Parser liest zuerst die Funktionsdeklaration und die JS-Engine platziert die Funktionsdeklaration während der Ausführung automatisch an der Spitze der Ausführungsumgebung.

Funktionsausdrücke sind unterschiedlich. Wenn der Funktionsausdruck ausgeführt wird, wird er tatsächlich interpretiert und ausgeführt. Es ist wichtig, dies zu verstehen!

Sehen Sie sich den Code an

<script>
  console.log(typeof fun); //"function"
  console.log(typeof fun2); //"undefined"
  console.log(typeof fun3); //"undefined"
  function fun(n1,n2){
   return n1+n2;
  }
  var fun2=function(n1,n2){
   return n1+n2;
  }
  var fun3=new Function("n1","n2","return n1+n2;");
 </script>
Nach dem Login kopieren

 3. Warum ist die Funktion nicht überlastet?

Dieses Problem sollte anhand der Sprachmerkmale von js berücksichtigt werden. Wie in Artikel 2 erwähnt, ist der Funktionsname nur ein Zeiger auf das Funktionsobjekt. Es wird klar, wenn Sie es anhand des Zeigerkonzepts verstehen.

Sehen Sie sich das Codebeispiel an:

<script>
  function fun(n1){
   return n1+100;
  }
  function fun(n1){
   return n1+200;
  }
  console.log(fun(1));// 201 
  
  //以上写法在解析后应为
  
  var fun=function(n1){
    return n1+100;
  }
  fun=function(n1){
   return n1+200;
  }
  
  // fun 的引用被覆盖了
  console.log(fun(1));// 201 
 </script>
Nach dem Login kopieren

Das war's für heute. Es geht um grundlegende Konzepte. Ich hoffe, es wird denjenigen helfen, die blinde Flecken in diesem Bereich haben! Wenn es etwas gibt, das korrigiert werden muss, hoffe ich, dass Sie einen Kommentar hinterlassen und mich korrigieren.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

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