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

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

Susan Sarandon
Libérer: 2024-12-22 08:34:10
original
985 Les gens l'ont consulté

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);
Copier après la connexion

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;
}
Copier après la connexion
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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal