Maison >interface Web >js tutoriel >Levage : face à la zone morte temporelle
Alors, peut-être pensez-vous aux différences fondamentales entre var vs let et const : "const est uniquement pour la lecture, let est mutable et var est les deux " et que la seule différence est que ES6 a introduit const et let, et var est une syntaxe old-school.
Eh bien, pas du tout.
1.- Ici, il est évident que nous ne pouvons pas appeler let valeur avant de la déclarer
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() // Cannot access 'favCoffee' before initialization let favCoffee
2.- Cela pourrait changer si nous utilisons var à la place de let:
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() //espresso var favCoffee
Oui, peut-être que cela ressemble à un pouvoir supplémentaire de var utilisé.
C'est ce qu'on appelle le Hoisting un processus qui vous permet d'utiliser des variables avant qu'elles ne soient déclarées.
3.- Considérons cet autre exemple :
console.log(favCoffee) // undefined var favCoffee = 'americano'
Bien que, dans cet exemple, var soit aussi levage ici nous sommes confrontés au TDZ.
Il est défini comme l'état dans lequel les variables sont inaccessibles, même si elles sont dans la portée, elles n'ont pas été déclarées.
{ /* TDZ starts . . . */ var favCoffee = 'expresso' // TDZ ends console.log(favCoffee) // expresso }
Donc, dans le processus de levage en raison du TDZ, par défaut, JS renvoie la valeur var initialisée comme indéfinie, mais avec let ou const il renvoie une erreur précisant que les variables n'ont pas été déclarées. Ceci est donc très utile pour détecter les erreurs et vous oblige à éviter d'utiliser des variables avant qu'elles ne soient déclarées
//using var favCoffee = 'expresso' var favCoffee console.log(favCoffee) // undefined
//using const favCoffee = 'expresso' const favCoffee console.log(favCoffee) // uncaught ReferenceError: Cannot access 'favCoffee' before initialization
(et c'est pourquoi il est important d'envisager d'utiliser une règle de journaliste comme ESLint pour éviter certaines erreurs lors du codage).
Le levage est toujours là, il est donc important d'utiliser let et const autant que possible, cela évite les erreurs non définies et vous permet de les détecter plus rapidement.
** ES6
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!