Maison > Article > interface Web > Explication détaillée du type de fonction dans les compétences javascript_javascript
Type de fonction
Le type de fonction est sans aucun doute une chose très importante en js.
1. Cette chose est avant tout un objet, ce qui signifie que c'est un type référence. Déclaration : Quand j'entends que c'est un objet, j'ai l'illusion que sa classe de base est un objet Non,
.Il et l'objet sont deux choses indépendantes. Lorsque vous tapez une fonction, ce qui est renvoyé est une fonction et non un objet
2. Chaque fonction est une instance de l'objet Function, qui a les mêmes propriétés et méthodes que les autres objets de référence. Puisqu'il s'agit d'un objet, le nom de la fonction est un pointeur vers l'objet fonction
Prise en charge de la syntaxe pour les déclarations de fonctions :
<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>
Explication : Il existe trois façons de déclarer une fonction, mais elles sont différentes.
La méthode 1 est comprise comme une déclaration d'une fonction, et les méthodes 2 et 3 sont comprises comme des expressions de fonction. (La méthode 3 n'est pas recommandée car elle entraînerait une analyse du code deux fois. Tout d'abord, le code ECMAScript normal est interprété, puis les paramètres entrants sont interprétés. Ceci
En écriture, le nombre de paramètres peut être N, mais le dernier paramètre est considéré comme le corps de la fonction)
La principale raison pour laquelle c'est différent est que l'analyseur js analyse différemment les déclarations de fonction et les expressions de fonction. L'analyseur lira d'abord la déclaration de fonction et le moteur js placera automatiquement la déclaration de fonction en haut de l'environnement d'exécution pendant l'exécution.
Les expressions de fonction sont différentes. Lorsque l'expression de fonction est exécutée, elle sera en fait interprétée et exécutée. Il est important de comprendre cela !
Regardez le code
<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>
3.Pourquoi la fonction n'est-elle pas surchargée ?
Ce problème doit être considéré à partir des caractéristiques linguistiques de js. Comme mentionné dans l'article 2, le nom de la fonction n'est qu'un pointeur vers l'objet fonction. Ce sera clair si vous le comprenez sur la base du concept de pointeurs.
Regardez l'exemple de code :
<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>
C'est tout pour aujourd'hui. Il s'agit de concepts de base. J'espère que cela sera utile à ceux qui ont des angles morts dans ce domaine ! S'il y a quelque chose à corriger, j'espère que vous laisserez un commentaire et me corrigerez.
Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.