Maison > interface Web > js tutoriel > Analyse de la différence entre les fonctions imbriquées javascript et l'appel de fonctions externes au sein des compétences function_javascript

Analyse de la différence entre les fonctions imbriquées javascript et l'appel de fonctions externes au sein des compétences function_javascript

WBOY
Libérer: 2016-05-16 15:16:46
original
1355 Les gens l'ont consulté

Nous savons tous que les variables locales définies dans une fonction sont toujours définies dans le corps de la fonction dans laquelle elle est déclarée et ses fonctions imbriquées, et il y aura toujours un objet pointant vers l'objet global dans la chaîne de portée de la fonction, afin que les fonctions puissent accéder aux variables globales.

var ga = 'global';
var func = function() {
  var la = 'local';
 return function() {
    return function()
    {
      return function()
      {
        alert(la);alert(ga);
      }
    }
 }

}
a = func();
a()()();// 弹出 local 和 global
Copier après la connexion

Ainsi, lorsque la fonction A définie en externe est appelée par la fonction B dans le corps de la fonction, A peut-il accéder aux variables locales définies dans B ? La réponse est non, modifiez légèrement l'exemple ci-dessus comme suit

var ga = 'global';

function repeat() {
 alert(la);  
}
var func = function() {
  var la = 'local';
  alert(1);
  repeat();
  alert(2);
};

func();
Copier après la connexion

Le résultat de l'opération ci-dessus est que seulement 1 apparaît. Lorsque la répétition est appelée, l'interpréteur js signale une erreur car il accède à une variable non définie et interrompt le programme.

La raison est que la fonction enregistre une chaîne de portée lorsqu'elle est définie. La fonction de répétition est définie en externe. Il n'y a pas de variable locale appelée la dans sa portée. Si nous continuons à chercher dans la portée globale, nous ne trouvons toujours pas. la, donc une erreur sera signalée.

Il y a donc une grande différence entre les fonctions imbriquées et les appels imbriqués à des fonctions externes au sein des fonctions.

Je pensais hier quand j'ai répondu à une question http://www.jb51.net/article/78958.htm Bien que je comprenne le concept, pourquoi ai-je toujours voulu appeler en répétition à l'intérieur du. fonction ? Je ne peux pas accéder aux variables locales de la fonction qui l'appelle. J'ai vérifié à nouveau les documents de référence aujourd'hui et je l'ai testé moi-même avec le code. J'espère que cet article pourra aider des amis qui ont la même confusion.

Étiquettes associées:
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