定义:从数组和对象中提取值,对变量进行赋值
1、数组的解构赋值
(1).解构赋值可以嵌套
let [a,[b,c],[d,e]] = [11,[12,13],[14,15]]; console.log(a,b,c,d,e);//11,12,13,14,15
(2).不完全解构
当左边的模式(你可以理解为格式)与右边不完全一样的时候,那么赋值过程中,只会给模
式匹配成功的部分的变量赋值。
let [a,b,c] = [1,2,3]; console.log(a,c,b);//1,2,3
(3).赋值不成功,变量的值为undefined
解构不成功,变量的值就等于undefined。相当于只声明了变量c,但是没赋值。
let [a, b, c] = [1, 2]; console.log(a, c, b);//1,undefined,2
2、对象的解构赋值
总结:1.等号左边是变量名,等号右边不能全是变量名
2.如何有嵌套格式,只需要左右两侧格式一致即可
3.等号左边赋值初始值,如果想要拿到初始值,只需要右侧的变量名不匹配即可
(1).解构赋值可以嵌套
// var a = {name:'25',age:10}; // var {a,b,c} = {'a':{name:'25',age:10},'b':12,"c":3}; // console.log(a,b,c);
(2).不完全解
当左边的模式(你可以理解为格式)与右边不完全一样的时候,那么赋值过程中,只会给模式匹配成功的部分的变量赋值,
var {a,b,c} = {'a':{name:'25',age:10},'b':12}; console.log(a,b,c);//{name:'25',age:10} 12 undeifined
3、对象的解构赋值 // var {a,b,c}={a:{d:'123'},'b':'124',c:'sda'} // console.log(a,b,c) // var {a,b,c} = {'a':'123','b':23,'c':'asdads'} // console.log(a,b,c) // let {a:b} = {'b':2}; // // console.log(a)//not defined // console.log(b)//underfimed // let{a:b} = {'a':3} // console.log(a)//not defined // console.log(b)//3
(4).允许设定默认值
var { a, b = 2 } = { 'a': 1} console.log(a, b);//1,2
3、字符串的解构赋值
var str = 'tangwen'; //赋值 let [a,b,c,d,e,f,g] = str; console.log(a,b,c,d,e,f,g);//t a n g w e n let [a1,b1,c1,d1,e1,f1,g1] = 'we lcome'; console.log(a1,b1,c1,d1,e1,f1,g1);//w e l c o m e console.log(d1);//l