« Le levage est un comportement en javascript où toutes les déclarations de variables et de fonctions sont déplacées vers le haut de la portée contenant pendant la phase de compilation avant l'exécution du code »
Vous avez peut-être rencontré cette définition partout mais « c'est un mythe selon lequel toutes les déclarations de variables et de fonctions sont physiquement en haut du code » Ce n'est pas vrai !
Mais à la place, en hissant toutes les déclarations de variables et de fonctions, la mémoire est déjà attribuée avant l'exécution du code dans la compilation et reste exactement là où nous les avons tapées.
Alors, exactement, comment var/let/const et les fonctions sont hissées.
Voici quelques exemples :
console.log(a) // undefined console.log(b) // ReferenceError console.log(c) // ReferenceError var a = 10; let b = 20; const c = 30;
La variable déclarée avec var sera levée et pendant le temps de compilation, la variable var assignée en mémoire avec une valeur indéfinie, c'est pourquoi lorsque nous consolez var avant la déclaration, nous obtenons undéfini
La variable déclarée avec const/let sera également levée mais pas initialisée avec undefined . nous ne pouvons pas y accéder avant la déclaration, sinon nous recevons une ReferenceError. Cela est dû à la zone morte temporelle, une heure où les variables existent mais non initialisées.
Mais qu'en est-il de la fonction
Eh bien, cela dépend de la manière dont nous déclarons nos fonctions. Voir ci-dessous.
greet1(); greet2(); greet3(); greet4(); //function declaration is full hoisted function greet1(){ console.log("greet1"); } // TypeError: greet2 is not a function var greet2 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet3' before initialization let greet3 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet4' before initialization const greet4 = function(){ console.log("greet2"); }
La déclaration de fonction traditionnelle est entièrement levée, ce qui signifie que nous pouvons l'appeler dans tout le code.
mais avec l'expression de fonction, nous ne pouvons pas la faire avant qu'elle n'ait été déclarée. C'est pourquoi trois fonctions déclarées avec des variables nous donnent une erreur. Nous avons donc deux options : soit nous changeons l'expression de fonction en déclaration de fonction, soit nous appelons la fonction après les déclarations.
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!