ES6总结之let和const
Contents
let const var关键字
let
和const
用于创建块级作用域
1. 不存在变量提升
var
在声明之前使用,值为undefined
let
和const
在声明之前使用会报错ReferenceError
if (true) {
// TDZ开始
tmp = 'abc'; // ReferenceError
console.log(tmp); // ReferenceError
let tmp; // TDZ结束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}
2. 存在暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
3. 不允许重复声明
var
后一个覆盖前一个let
和const
再次声明会报错
4. 全局变量不再属于顶层变量
var
声明的全局变量属于window
属性
var d = 1;
console.log(window.d); // 1
let g = 1;
console.log(window.g); // undefined
let和const区别
let
可以先声明再赋值const
声明时必须赋值且为常量如果是基本类型,存放的就是就是这个变量的值。但如果是引用类型,存放的是它的地址