JavaWeb快速入门--JQuery,JavaScript变量声明提升
// 在JavaScript中,变量可以在使用前声明,也可以在使用后声明。这种现象被称为“提升”(hoisting)。
// 但是,变量提升只对变量声明有效,不包括变量的赋值。
// 错误的示例,会抛出ReferenceError,因为变量a在赋值语句之前就被提升了,但是没有赋初始值:
console.log(a); // ReferenceError: a is not defined
var a = 10;
// 正确的示例,先声明变量,再使用变量:
var a; // 变量提升,声明被提升到代码头部
console.log(a); // 输出undefined,因为变量a声明了,但还没有赋值
a = 10; // 变量赋值不会被提升
// 使用let声明的变量不会发生变量提升,所以它会在声明的代码块内形成一个暂时性死区,
// 在声明之前使用这个变量会抛出ReferenceError。
// 错误的示例,let声明的变量不会提升,所以在声明之前使用会报错:
console.log(b); // ReferenceError: b is not defined
let b = 20;
// 正确的示例,先声明变量,再使用变量:
let c; // 声明被提升到代码头部,但不会有初始值,所以也形成了暂时性死区
console.log(c); // ReferenceError: c is not defined
c = 30; // 变量赋值不会被提升
评论已关闭