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 :
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!