Portée et levage des fonctions Javascript : dévoiler le mystère
Dans le domaine de JavaScript, comprendre la portée et le levage des fonctions est crucial pour démêler un code complexe . Examinons un exemple qui a suscité la question : « Pourquoi ce code renvoie-t-il « 1 » ? » est un curieux mécanisme qui place les déclarations de fonctions au sommet de leur portée. Dans notre exemple, la fonction b est hissée à la portée globale, la transformant en :
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
Portée variable : confinée à la portée
Maintenant, abandonnons lumière sur la portée variable. Dans notre code, a est déclaré avec var dans la portée globale puis redéfini dans b. Lorsqu'une variable est déclarée à l'intérieur d'une fonction, elle n'est accessible que dans le cadre de cette fonction.
function b() { function a() {} a = 10; return; }
Le comportement mal compris : une plongée plus profonde
À première vue, la fonction de déclaration a() {} peut ressembler à un déclaration de fonction. Cependant, c'est en fait équivalent à var a = function() {};, définissant un objet de type fonction. Cela signifie que la fonction a() {} ne crée pas une fonction nommée a mais réaffecte plutôt la variable a existante avec une nouvelle fonction.Uniter le levage et la portée
Combinant le levage de fonctions et la portée variable, notre code fait essentiellement ce qui suit :Lève b au global scope.Crée une variable locale a dans b.
Réaffecte le global a à 10.
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!