1.数组的解构赋值
1 2 3 4 5 6 7 8 9 10 11 12 | //以前给变量赋值 let a=1,b=2,c=3 //在es6里 可以这样 // let [a,b,c]=[1,2,3] // console.log(a,b,c) let ary=[ 'a' , 'b' ] // let [a,b,c]=ary // console.log(a,b,c)// a b undefined let arr=[ 'aa' , 'bb' , 'cc' , 'dd' ] let [a,b,c]=arr console.log(a,b,c) |
2.嵌套赋值
1 2 3 | //嵌套数组,其实是给对应的变量付得值 let [x,y,[s],[[f]]]=[1,2,[3],[[4]]] console.log(x,y,s,f) |
3.省略赋值
1 2 3 4 5 6 7 8 | let ary=[1,2,3,4,5,6] //定义一个数组ary let a=ary[0] //定义一个变量a,保存的是ary中的第一个值 let b=ary[ary.length-1] //定义一个变量b,保存的是ary中的第一个值 //es6的写法:x取到ary中的第1项,y是ary的第5项 let [x,,,,y]=ary console.log(x,y) //1,5 |
4.不定参数的赋值
1 2 3 4 5 6 7 8 | //比如现在有个数组【1,2,3,4,5】 现在我想让a=1 b=[2,3,4,5] let [a,...b]=[1,2,3,4,5] console.log(a,b) //1 ,[2,3,4,5] //这就是不定参数赋值 let [,,x,,...y]=[1,2,3,4,5,6,7,8,9] console.log(x,y) //3 ,[5,6,7,8,9] |
5.默认值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | let [f0,f1]=[1] console.log(f0,f1) //1 ,undefined 现在f1没值 所以是undefined, let [f2,f3=2]=[1] console.log(f2,f3) //1 ,2 如果后边有值 就取后边的值 ,如果没有 就取2 相当于是默认值 //es6里边的运算是严格运算的,判断一个位置是否有值, 是用的===判断, //如果数组中成员不严格等于undefined ,默认值不会生效 let [f=1]=[2] //null console.log(f) //2 //null function fn() { console.log( "haha" ) } let [x=fn(),y=0]=[1] console.log(x,y) //1 ,0 //所以说只要变量在数组中的位置不是undefined,fn函数就不会执行 |
针对es6中...的用法总结:
用法1:展开运算符(spread operator),作用是和字面意思一样,就是把东西展开。可以用在array
和object
上都行,比如
1 2 3 4 5 6 | let a = [1,2,3]; let b = [0, ...a, 4]; // [0,1,2,3,4] let obj = { a: 1, b: 2 }; let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 } let obj3 = { ...obj, a: 3 }; // { a:3, b:2 } |
用法2:剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array
里面赋值给它。一般只针对array
的解构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | let a = [1,2,3]; let [b, ...c] = a; b; // 1 c; // [2,3] // 也可以 let a = [1,2,3]; let [b, ...[c,d,e]] = a; b; // 1 c; // 2 d; // 3 e; // undefined // 也可以 function test(a, ...rest){ console.log(a); // 1 console.log(rest); // [2,3] } test(1,2,3) |