Maison > interface Web > js tutoriel > Les fonctions anonymes JavaScript imitent les compétences scope_javascript au niveau du bloc

Les fonctions anonymes JavaScript imitent les compétences scope_javascript au niveau du bloc

WBOY
Libérer: 2016-05-16 15:26:12
original
1595 Les gens l'ont consulté

Fonction anonyme

La fonction est l'objet le plus flexible de JavaScript. Nous expliquons ici uniquement l'utilisation de ses fonctions anonymes.

Fonction anonyme : C'est une fonction sans nom de fonction.

La définition de la fonction, introduisez d'abord brièvement la définition de la fonction, qui peut être grossièrement divisée en trois manières

Le premier type : C'est aussi le plus conventionnel

function double(x){
  return 2 * x;  
}
Copier après la connexion

La deuxième méthode : Cette méthode utilise le constructeur Function et traite à la fois la liste des paramètres et le corps de la fonction comme des chaînes. Ceci est très gênant et n'est pas recommandé.

var double = new Function('x', 'return 2 * x;');
Copier après la connexion

Le troisième type :

var double = function(x) { return 2* x; }
Copier après la connexion

Notez que la fonction à droite de "=" est une fonction anonyme. Après avoir créé la fonction, la fonction est affectée à la variable carré.

Il n'y a pas de concept de portée au niveau du bloc en JavaScript. En d’autres termes, les variables définies dans les instructions au niveau du bloc sont en réalité créées dans la fonction conteneur (fonction externe) plutôt que dans l’instruction.

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  alert(i);  //count 
} 
Copier après la connexion

Pour cette fonction dans des langages tels que Java et C#, la variable i ne sera définie que dans l'instruction de boucle for. À la fin de la boucle, i sera détruite. Mais en JavaScript, la variable i est définie dans l'objet d'activité outputNumber(), elle est donc accessible dans la fonction dès qu'elle est définie. Même si vous redéclarez la même variable, sa valeur ne sera pas modifiée.

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  var i;   //重新声明变量 
  alert(i);  //count 
} 
Copier après la connexion

Les fonctions anonymes peuvent être utilisées pour imiter la portée au niveau du bloc et éviter ce problème. La syntaxe des fonctions anonymes utilisées comme portée au niveau du bloc (également appelée portée privée) est la suivante :

(function(){ 
   //这是块级作用域 
})() 
Copier après la connexion

La définition de code ci-dessus appelle une fonction anonyme et met la déclaration de fonction entre parenthèses, indiquant qu'il s'agit d'une expression de fonction. Une autre paire de parenthèses qui le suit appelle immédiatement la fonction.
Chaque fois que vous avez temporairement besoin de certaines variables, vous pouvez utiliser une portée privée, par exemple :

function outputNumber(count){ 
  (function(){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  })(); 
  alert(i);  //导致一个错误 
} 
Copier après la connexion

De cette façon, nous insérons une portée privée en dehors de la boucle for. Toutes les variables définies dans une fonction anonyme seront détruites en fin d'exécution.

Cette technique est souvent utilisée en dehors des fonctions dans la portée globale pour limiter l'ajout de trop de variables et de fonctions à la portée globale.

En général, nous devrions essayer de minimiser l'ajout de variables et de fonctions à la portée globale.

Cette approche peut réduire le problème des fermetures occupant la mémoire, car il n'y a aucune référence à la fonction anonyme et sa chaîne de portée peut être détruite immédiatement tant que la fonction est exécutée.

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal