es6学习:解构赋值
2018-09-21 本文已影响0人
梁风有意
1.数组的赋值
数组的解构是一一对应的
let [a,b,c] = [1,2,3];
console.log(a);\\1
console.log(b);\\2
console.log(c);\\3
解构可以有默认值
let [d,e=true] = [1];
console.log(d);//1
console.log(e);//true
//但是如果存在默认值,在赋值的时候赋值undefined,赋值还是取默认值
let [f,g='ggg'] = [1,undefined];
console.log(f);//1
console.log(g);//ggg
解构不成功的话,值是undefined
let [h,i] = [1];
console.log(h);//1
console.log(i);//undefined
还存在不完全解构,也就是等号右边的值比左边多
let [j, [k], l] = [1, [2, 3], 4];
console.log(j )// 1
console.log(k )// 2
console.log(l) // 4
2.对象的解构
let {tzy,lss} = {tzy:'boy',lss:'girl'};
console.log(tzy);
console.log(lss);
//与数组不同的是,对象的解构是按照对象的属性名来赋值的,所以变量名要和属性名相同,
//上面写法是es6的语法糖,当键和值相等时,可以简写,实际还是
let {tzy:tzy,lss:lss} = {tzy:'boy',lss:'girl'};
//也可以用另一种
let {key:value} = {key:'value'};
console.log(value);//value
3.字符串解构
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const [a, b, c, d, e] = 'hello';
console.log(a)// "h"
console.log(b)// "e"
console.log(c)// "l"
console.log(d)// "l"
console.log(e) // "o"
类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。
let {length : len} = 'hello';
len // 5