javascript - Questions sur la fermeture de fonctions et le passage de fonctions en tant que paramètres
世界只因有你
世界只因有你 2017-06-26 10:50:31
0
3
774

1.Description :

Je veux obtenir un résultat de tableau de fonctions. Tout d'abord, la fonction func ajoute des fonctions anonymes au résultat du tableau (chaque fonction anonyme enregistre son propre numéro)

Mais j'ai passé des paramètres à la fonction anonyme après le retour, ce qui équivaut à simplement la remplacer. Pourquoi les résultats sont-ils différents ?

function func(){
  var result =[] ;
  for(var i=0;i<3;i++){
    result.push(
      function (num){
        return function (){
          return num
        }      
      }(i)
    )
  }
 return result
}

console.log(func()[1]())  //这样我就能得到各自函数里的num

Ensuite, je passe la fonction anonyme après retour en paramètre, mais je n'arrive pas à l'obtenir.

function func(fn){
  var result =[] ;
  for(var i=0;i<3;i++){
    result.push(
      function (num){
        return fn;     
      }(i)
    )
  }
 return result
}

function fn(){
  return num
}
console.log(func(fn)[1]()) //报错提示num未定义
  
世界只因有你
世界只因有你

répondre à tous(3)
Ty80

Parce que fn dans le deuxième morceau de code est défini dans l'environnement global.
Vous pouvez consulter le code ici et ci-dessous, j'espère qu'il vous sera utile

function func(fn){
  var result =[] ;
  for(var i=0;i<3;i++){
    result.push(
      function (num){
        return fn;     
      }(i)
    );
  }
 return result;
}

function fn(){
  return num;
}
var num = 1;
console.log(func(fn)[1]()); //1
给我你的怀抱

Il s'agit d'un problème de portée très simple. Les paramètres formels de la fonction définis dans votre boucle ne fonctionnent que dans cette fonction.

Les fonctions ne doivent pas être définies dans des boucles ou dans des conditions de jugement, car de nombreux problèmes inattendus pourraient survenir. Retirez votre fonction et définissez-la, et vous constaterez que la logique est beaucoup plus claire.

扔个三星炸死你

Problème de portée numérique, JavaScript a une portée de fonction, num est à l'intérieur de la première fonction et la deuxième fonction est en dehors de la première fonction, alors la deuxième fonction ne peut pas obtenir num.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!