Maison >interface Web >js tutoriel >Comment le levage et la portée des fonctions JavaScript affectent-ils l'affectation et la récupération des variables ?

Comment le levage et la portée des fonctions JavaScript affectent-ils l'affectation et la récupération des variables ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 17:08:13350parcourir

How Does JavaScript Function Hoisting and Scoping Affect Variable Assignment and Retrieval?

Définir la portée et le levage des fonctions Javascript : dévoiler les mécanismes cachés

Vous êtes tombé sur un exemple déroutant impliquant la portée et le levage de JavaScript. Approfondissons ces concepts pour mieux comprendre.

Histing de fonction

Le levage élève les déclarations de fonction en haut de leur portée. Dans votre exemple :

function b() {
    a = 10;
    return;

    function a() {}
}

L'interpréteur réorganise ce code comme suit :

function b() {
    function a() {}
    a = 10;
    return;
}

Cela signifie que la déclaration de la fonction interne a() est effectivement placée au début de b() fonction, même si elle apparaît plus tard dans le code.

Variable Scoping

En JavaScript, les variables peut avoir une portée globale ou locale. Les variables globales sont accessibles de n'importe où dans le programme, tandis que les variables locales sont confinées dans les portées de leurs fonctions de définition.

Le cas curieux des déclarations de fonction

Dans votre code , la déclaration de la fonction interne a() dans b() est interprétée comme une invocation immédiate de fonction :

var a = function () {};

Cela crée effectivement une variable locale a dans la fonction b(), qui ombre la variable globale a.

Mettre le tout ensemble

En combinant les concepts de levage et de portée variable, vous pouvez visualiser la séquence d'exécution comme suit :

  • La déclaration de la fonction b() est hissée en haut de la portée globale.
  • La var L'instruction a = 1 définit la variable globale a.
  • La déclaration de la fonction interne a() est également hissée dans la fonction b() et se comporte comme var a = function () {};.
  • L'instruction a = 10 réaffecte la variable locale a dans b().
  • Lorsque vous appelez alert(a), elle renvoie la variable globale a, qui n'a pas été modifiée et reste son original valeur de 1.

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