变量提升
即变量可以在声明之前使用,值为 undefined ,如 var 这种使用方式虽然不报错,但它是错误的,根据代码规范我们必须要在变量声明后使用。
在ES6中严格规定了这点
let 和 const 所声明的变量一定要在声明后使用,否则报错。
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
- 通过var定义(声明)的变量,在定义语句之前就可以访问到;
-
值:undefined;
-
console.log(a); //undefined var a = 1;
-
因为有变量提升的缘故,上面代码实际的执行顺序为:
-
var a; console.log(a); a = 1;
-
将变量声明提升到它所在作用域的最开始的部分。