let 和 const
let和const命令用于声明变量。
let声明的变量是可变的,const声明的变量是不可变的。
let foo = 1;
foo = 2;
const bar = 1;
bar = 2; // 报错
上面代码中,let声明的变量foo是可以重新赋值,但是如果对bar声明的变量重新赋值,就会报错。
注意,如果const声明的变量指向一个对象,那么该对象的属性是可变的。
const foo = {
bar: 1
};
foo.bar = 2;
上面代码中,变量foo本身是不可变的,即foo不能指向另一个对象。但是,对象内部的属性是可变的,这是因为这时foo保存的是一个指针,这个指针本身不可变,但它指向的对象本身是可变的。
解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
let [a, b, c] = [1, 2, 3];
上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
解构赋值不仅可以用于数组,还可以用于对象。
let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
解构赋值时,还可以设置默认值。
上面代码中,变量y解构赋值时没有取到值,所以默认值就生效了。