Maison  >  Article  >  interface Web  >  Connaissances requises pour les fonctions js

Connaissances requises pour les fonctions js

小云云
小云云original
2018-02-28 14:31:131061parcourir

Il faut savoir qu'en js, le type référence est une structure de données, comprenant 5 types de référence, à savoir Object, data, Array, re请输入代码gExp et Function. Aujourd'hui, nous allons parler de la structure des données de Function. Dans 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 la fonction

   var sum=function(num1,num2){
      return num1+num2;
}
  1. Utilisez le constructeur Function

    使用构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举出了参数
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 deux 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. Les fonctions ne sont pas surchargées

Si deux fonctions du même nom sont déclarées, le résultat est que cette 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

  • y compris ceci, les arguments

    ne seront pas décrits en détail

4. Attributs et méthodes des fonctions

  • La fonction a 2 attributs, la longueur et le prototype

la longueur indique que la fonction espère recevoir un nom Le nombre de paramètres.

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 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'exécuter des fonctions spécifiques Appeler une fonction dans un domaine définit en fait la valeur à laquelle il fait référence dans le corps de la fonction.

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)) //2

appel. méthode et La méthode apply ne fait pas beaucoup de différence. La différence est que le deuxième paramètre de la méthode d'appel doit être passé 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éthode.

Recommandations associées :

Explication détaillée des exemples de fonctions JS

js Passage des paramètres des fonctions par valeur

Appels de fonctions JS et problèmes liés aux arguments des paramètres implicites et ceci

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn