解构赋值
ES6 提供的一种模式。这种操作与之前的 ES5 的赋值是有些区别的。他有数组形式,对象形式,嵌套形式,字符串形式。
数组形式
在 ES5 中有这样的一个赋值的操作 var a=1;var b=2;var c=3;
那么在 ES6 中我们就可以这样来写 var [a,b,c] = [1,2,3];
这两句话 的含义是一样的。这个是数组的解构赋值。数组是一个有顺序的对象结构
对象形式
对象的解构赋值,变量名要和 key 值对应相同。
var {name,age} = {name:"xiancai",gae:"27"};
console.log(name);
console.log(age);
如果对应的 key 值不相同就会出现 undefined 。对象不是一个按照顺序的数据结构,有时候不会按照顺序解释出现的例句。
var {age,name} = {name:"xiancai",age:"27"};
console.log(name);
console.log(age);
这段代码输出的还是 xiancai 27 所以和顺序没关系,是一个按照 key 值去查找的一个数据方法。
嵌套形式
也可以做一些嵌套,比如在数组中嵌套对象,在对象中嵌套数组
var {a,b,c} ={a:"aaa",b:[1,2,3],c:"ccc"};
console.log(a);
console.log(b);
console.log(c);
字符串形式
字符串也是可以进行解构赋值的。而数字和布尔值是不行的。
var [a,b,c] = "abcdefg";
console.log(a);
console.log(b);
console.log(c);
但是数字和布尔值就不行了,就会报错。凡是拥有 iterator 接口的都可以进行解构赋值,这个 iterator 叫做遍历器。
这里有个小例子
function ajax({url,type,data}){
console.log(url);
console.log(type);
console.log(data);
};
ajax({url:"localhost",type:"post",data:"name:hello"})
如果按照 ES5 的写法我们要这么写
function ajax(box){
var url = box.url;
var type = box.type;
var data = box.data;
console.log(url);
console.log(type);
console.log(data);
};
ajax({url:"localhost",type:"post",data:"name:hello"})
解构赋值大大的简化了过程。