Maison >interface Web >js tutoriel >Pourquoi ce code JavaScript renvoie-t-il « 1 » ?

Pourquoi ce code JavaScript renvoie-t-il « 1 » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 08:34:101080parcourir

Why Does This JavaScript Code Return

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;
}
Dans notre cas, la variable a redéfinie à l'intérieur de b est locale à la fonction. Ainsi, le a global d'origine reste inchangé.

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.

    Alerte le global a, qui a la valeur 1.
  1. Par conséquent, l'alerte affiche "1" car le a utilisé dans b est une variable locale qui n'affecte pas la variable globale. une.

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