Maison > Article > interface Web > Quelles portées ont été introduites dans es6
La « portée au niveau du bloc » a été introduite dans es6 ; dans es5, il n'y a que la portée globale et la portée des fonctions. Dans es6, la portée formée par une paire d'accolades est la portée au niveau du bloc, et la portée au niveau du bloc est. explicitement autorisé Lors de la déclaration d'une fonction, l'instruction de déclaration de fonction se comporte comme let et ne peut pas être référencée en dehors de la portée au niveau du bloc.
L'environnement d'exploitation de ce tutoriel : système Windows 10, ECMAScript version 6.0, ordinateur Dell G3.
ES6 a introduit la portée au niveau du bloc, qui permet explicitement de déclarer les fonctions dans la portée au niveau du bloc. ES6 stipule que dans la portée au niveau du bloc, les instructions de déclaration de fonction se comportent comme let et ne peuvent pas être référencées en dehors de la portée au niveau du bloc.
Dans la norme ES6, la portée formée par une paire d'accolades est la portée au niveau du bloc.
ES5 stipule que les fonctions ne peuvent être déclarées que dans la portée de niveau supérieur et la portée de fonction, et ne peuvent pas être déclarées dans la portée de niveau bloc.
ES5 n'a qu'une portée globale et une portée de fonction, mais pas de portée au niveau du bloc, ce qui entraîne de nombreux scénarios déraisonnables.
(1) Les variables internes peuvent remplacer les variables externes.
var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = 'hello world'; } } f();//undefined
(2) La variable de boucle utilisée pour le comptage est divulguée en tant que variable globale
var s = 'hello'; for (var i = 0; i < s.length; i++) { console.log(s[i]);//h e l l o } console.log(i);//5
La variable i n'est utilisée que pour contrôler la boucle, mais une fois la boucle terminée, elle ne disparaît pas et est divulguée dans une variable globale.
Les exemples sont les suivants :
// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function
Dans la norme ES6, lorsqu'une fonction est déclarée dans une portée au niveau du bloc, la déclaration de fonction sera traitée comme une variable déclarée par var, promue en haut de la portée au niveau du bloc. , et la fonction ne sera déclarée que comme nom de variable, et ne déclare pas le corps de la fonction, le code ci-dessus est équivalent à :
// 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { var f = undefined; if (false) { function f() { console.log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function
[Recommandations associées : tutoriel vidéo javascript, front-end web]
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!