一、块级作用域
相比之前的var声明变量,es6新增了let,const。
var:可以重复声明,可以重新赋值,没有块级作用域。
let:不可以重复声明,可以重新赋值,具有块级作用域,不存在变量提升。
const:声明的是一个常量,不可以重新赋值,其余与let特点相识。
二、解构赋值
es6允许我们按照一定模式从对象或数组中去提取值,对变量进行赋值,这就叫做解构赋值。
1.解构赋值
代码如下(示例):
//传统写法
var arr=[1,2,3];//把数组的值分别赋给下面的变量;
var a=arr[0];
var b=arr[1];
var c=arr[2];
console.log(a);//a的值为1
console.log(b);//b的值为2
console.log(c);//c的值为3
//es6写法
var[a,b,c]=[1,2,3];//把数组的值分别赋给下面的变量;
console.log(a);//a的值为1
console.log(b);//b的值为2
console.log(c);//c的值为3
1.解构赋值是可以以嵌套的方式进行的
var[a,b,[c1,c2] ] =[1,2,[3.1,3.2] ];
console.log(c1);//结果:c1的值为3.1
console.log(c2);//结果:c2的值为3.2
2.不完全解构
var[a,b,c]=[1,2];
console.log(a);//结果:a的值为1
console.log(b);//结果:b的值为2
这种不完全解构虽说不完全,但是其他对应的变量是可以成功进行赋值的。
3.允许设定默认值
var[a,b,c=3]=[1,2];
console.log(a);//结果:a的值为1
console.log(b);//结果:b的值为2
console.log(c);//结果:c的值为3
除了数组的解构赋值,对象也可以解构赋值,并且跟数组方法一样。
2.交换变量的值
代码如下(示例):
//传统写法
varx=1;
vary=2;
varz=x;//第三个变量临时存放x的值
x=y; //把y的值赋给x;
y=z; //把z的值赋值给y;
console.log(x);//结果:x为2
console.