ES6之let和const命令
1、let命令
- 作用域:let所声明的变量只在let命令所在的代码块内有效(块级作用域),var全局范围内都有效。
{
let a = 10;
var b = 11;
}
console.log(a);//undefined
console.log(b);//11
- 不存在变量提升:不像var那样,会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。就是变量即使在使用后定义也会保错
- 暂时性死区:只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响。在代码块内,使用let命令声明变量之前,该变量都是不可用的。
- 不允许重复声明:不允许在相同的作用域里重复声明同一个变量。
2、const命令
- const也用来声明变量,但是声明的是常量,且一旦声明就不能再改变。因为const一旦声明,就必须初始化,所以如果使用const定义变量却没有赋值,则会报错。
- 块级作用域、不存在变量提升、存在块级作用域、不允许重复声明:均与let相同
3、设置跨模块常量
//constants.js模块
export const A = 1;
//text1.js
import * as constant from './constants';
console.log(constant.A);
//text2.js
import {
A} from './constants';
console.log(A);
4、全局对象属性:
全局对象是最顶层的对象,在浏览器指的是window 对象。
ES6一方面规定,var命令和function命令声明的全局变量,依旧是全局对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于全局对象的属性。