Open CPPAlien opened 4 years ago
var 可以重复声明。 而 let 和 const 不可以,会报语法错误。
Uncaught SyntaxError: Identifier 'xxx' has already been declared
Each loop iteration is its own new scope instance, and within each scope instance,
for (const index in students) {
// this is fine
}
for (const student of students) {
// this is also fine
}
for (const i = 0; i < 3; i++) {
// oops, this is going to fail
// after the first iteration
} // 等价于下面这种形式,所以出错了
{
const $$i = 0; // a fictional variable for illustration
for ( ; $$i < 3; $$i++) {
const i = $$i; // here's our actual loop `i`!
// ..
}
}
console.log(xxx);
let xxx = "Suzy";
Uncaught ReferenceError: Cannot access 'xxx' before initialization
Temporal Dead Zone 语义禁止在未声明之前访问变量。它强调了这样的规则:不要在未声明前使用任何东西。
TDZ是一个重要的概念,它影响着const、let 和 class 语句的可用性。它不允许在声明之前使用变量。
提升(Hoisting)是 JavaScript 将声明移至顶部的默认行为。 是 js 编译时的一种行为。