ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。解构赋值在实际开发中可以大量减少我们的代码量,并且让我们的程序结构更清晰。
数组的解构赋值:
let [a,b]=['1','2'];
console.log(a);//1
console.log(b);//2
//上面的代码表示,可以从数组中提取值,按照位置的对象关系对变量赋值。
//需要注意数组模式和赋值模式需要统一,也就是=号两边的格式需要统一;
//解构赋值是允许你使用默认值的,先看一个最简单的默认是的例子。
let [foo = true] =[];
console.log(foo);//true
//上边的例子数组中只有一个值,可能你会多少有些疑惑,我们就来个多个值的数组,并给他一些默认值。
let [a,b="hello"]=['word']
console.log(a+b); //控制台显示“wordhello”
//需要注意null 和undefined的区别
let [a,b="hello"]=['word',undefined];
console.log(a+b); //控制台显示“wordhello” 由于undefined是什么都没有,b就是默认值
let [a,b="hello"]=['word',null];
console.log(a+b); //控制台显示“wordnull” null相当于有值,值为null,所以b不取默认值输出为 wordnull;
对象的解构赋值:
let {obj1,obj2} ={obj1:'111',obj2:'222'}
console.log(obj1);//111
console.log(obj1);//222
//对象解构是根据键值来匹配赋值;
//注意:如果在解构前就定义了变量,那么需要使用圆括号。否则会报错;
var foo;
({foo}={foo:'123456'});
console.log(foo);//123456
字符串的解构赋值:
let [a,b,c]='123';
console.log(a);//1
console.log(b);//2
console.log(c);//3