Maison >interface Web >js tutoriel >Synthèse et partage des points de connaissances liés aux fonctions js
En js, le type référence est une structure de données, comprenant 5 types de référence, à savoir Object, data, Array, veuillez saisir le code gExp, Function. Aujourd'hui, nous allons parler de la structure des données de Function.
En js, les fonctions sont en fait des objets, et chaque fonction est une instance du type Function. Comme les autres types de référence, ils possèdent des propriétés et des méthodes.
1. Il existe plusieurs façons de définir des fonctions
1) Définition de la syntaxe de déclaration de fonction
function sum(num1,num2){ return num1+num2; }
2) Expression de fonction
Notez qu'il y a un point-virgule après l'expression de fonction
var sum=function(num1,num2){ return num1+num2; }
Utilisez le constructeur Function
Le constructeur peut recevoir n'importe quel nombre de paramètres, mais le dernier paramètre est toujours considéré comme le corps de la fonction, tandis que les paramètres précédents énumèrent les paramètres
var sum=new Function("num1","num2","return num1+num2")
Bien sûr, la troisième méthode n’est pas conviviale et n’est pas recommandée.
Les noms de fonctions ne sont que des pointeurs vers des fonctions, donc les noms de fonctions ne sont pas différents des autres variables contenant des pointeurs d'objet. Autrement dit, une fonction peut avoir plusieurs noms.
Quelle est la différence entre la déclaration de fonction et l'expression de fonction ici ?
Lorsque l'analyseur charge des données dans l'environnement d'exécution, il traite différemment les déclarations de fonction et les expressions de fonction. L'analyseur lit d'abord la déclaration de fonction et rend le code de déclaration de fonction appelable avant tout code. C’est ce que nous appelons habituellement le levage de déclaration de fonction. Les expressions de fonction sont différentes. Elles doivent attendre que l'analyseur de fonctions exécute le bloc de code où elles se trouvent avant d'être réellement exécutées. Comparez les 2 exemples suivants
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 La fonction n'est pas surchargée
Si 2 noms avec le même nom sont des fonctions déclarées, le résultat est que la dernière fonction écrase la fonction précédente.
function sun(a){ return a+100; } function sun(a){ return a+200; } var result=sum(2)//202
3. Les attributs internes de la fonction
incluent ceci, les arguments
Pas plus de détails
4. Attributs et méthodes de la fonction
La fonction a 2 attributs, longueur et prototype
length indique le nombre de paramètres nommés que la fonction espère recevoir.
function a(name){ //todo } function b(name,age){ //todo } function c(){ //todo } a.length //1 b.length //2 c.length //0
L'attribut prototype est très important pour les types de référence et sera expliqué spécifiquement, je n'entrerai donc pas dans les détails ici.
Chaque fonction contient 2 méthodes non héritées apply et call
Le but de ces deux méthodes est d'appeler la fonction dans une portée spécifique, qui est en fait de définir la fonction Le valeur à laquelle cela fait référence dans le corps.
Premièrement. La méthode apply() reçoit deux paramètres, l'un est la portée dans laquelle la fonction s'exécute et l'autre est le tableau de paramètres. Le deuxième paramètre peut être une instance du tableau ou des arguments.
<.>
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)) //2Il n'y a pas beaucoup de différence entre la méthode call et la méthode apply. La différence est que le deuxième paramètre de la méthode d'appel doit être listé un par un. Le plus grand avantage de l'utilisation de call et apply pour étendre la portée est que l'objet n'est couplé à aucune méthodeRecommandations associées :
Explication détaillée de JS instances de fonction
Analyse détaillée de l'anti-rebond et de la limitation de la fonction JS_Connaissances de base
Explication du passage par valeur des paramètres de la fonction js
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!