Les variables déclarées par let et const ne sont valables qu'à l'intérieur du bloc de code
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
Il n'y a pas de promotion de variable
La variable doit être en cours d'utilisation après la déclaration, sinon une erreur sera signalée
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
Les déclarations répétées ne sont pas autorisées
// 报错 function () { let a = 10; var a = 1; }
Portée au niveau du bloc
function f() { console.log('I am outside!'); } (function () { if(false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); //I am inside! ES5 函数提升 //I am outside! ES6 块级作用域
commande const
déclare une constante en lecture seule. Une fois déclarée, la valeur de la constante ne peut pas être modifiée
Une fois qu'une variable est déclarée, elle doit être initialisée immédiatement et ne peut pas être laissée pour une affectation ultérieure
Variables globales déclarées par la commande let, la commande const et la commande class n'appartiennent pas à l'objet global Attributs
var a = 1; // 如果在Node的REPL环境,可以写成global.a // 或者采用通用方法,写成this.a window.a // 1 let b = 1; window.b // undefined
Laissez-moi vous présenter la commande const d'ES6 séparément
Il n'y a toujours pas eu de constante dans js avec ecma comme concept de base, es6 compense ce défaut
const foo='foo'; foo='bar';//TypeError: Assignment to constant variable.
L'exemple ci-dessus déclare une constante d'un type de base. Si vous essayez de modifier la valeur initiale, il signalera une erreur ; s'il s'agit d'une valeur de type référence, la même chose s'applique, mais il y a une chose à noter par exemple : <. 🎜>
const foo=[]; foo=[1];//Assignment to constant variable.
const foo=[1,2,3]; foo[1]=4; console.log(foo)//[1, 4, 3]
const foo=Object.freeze([1,2,3]); foo[1]=4; console.log(foo)//[1, 2, 3]