一:let和const命令
1.let命令
基本用法:和var差不多,用来声明变量,但只在命令所在的代码块内有效。for循环里let就很适用。
不存在变量提升:var声明,有时使用变量在声明之前不会报错,只是undefined,这是不应该的,使用let就很好的解决了这个问题。
暂时性死区:同一个变量名称,在有let声明的代码块里,var声明会失效。
不允许重复声明:let不允许在相同作用域内,重复声明同一变量。
2.块级作用域
ES5使用var声明变量,内层变量可能会覆盖外层变量
用来计数的循环变量泄露成全局变量(闭包)
ES6使用let则实际上新增了JavaScript的块级作用域
3.const命令
声明常量,不能重复声明,不能使用已声明的变量名称,不能声明后再赋值。
二:变量的解构赋值
1.数组的解构赋值
基本用法:
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
以前给变量赋值,只能直接指定值:
let a = 1;
let b = 2;
let c = 3;
ES6允许下面写法:
let [a, b, c] = [1, 2, 3];
2.对象的解构赋值
let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"