解构的定义:从数组或者对象中提取值并对变量进行赋值成为解构,解构时左边的变量就会被赋予对应的值。如果解构不成功,变量的值就等于undefined。
1.数组解构
1.完全解构
let [a, b, c, d, e] = [1, 2, 3, [4, 5], 6]
console.log(a, b, c, d, e);
2.不完全解构
let [a, b, c, [d], e] = [1, 2, 3, [4, 5, 6], 7]
并不是每个变量都可以赋值到
3.默认值解构(当默认值生效条件 当右侧匹配严格模式为undefined)
let [a = 1, b = 2, c = 3] = [4, 5, 6]
// console.log(a, b, c);
4.集合解构,拓展运算符
let [a, ...b] = [1, 2, 3, 4]
console.log(a, b);
5.拓展运算符
let [...arr] = [1, 2, 3, 4, 5]
console.log(arr);
2.对象解构
1.属性名必须和变量名一致才能取到值
let { name, age } = { name: 'zhangsan', age: 12 }
console.log(name, age);
2.属性名和变量名不一致 给属性名重命名
let { name: a, age: b } = { name: 'zhangsan', age: 12 }
console.log(a, b);
3.嵌套结构
let obj = { p: ['hello', { y: "world" }] }; //a b取到hello world
let { p: [a, { y: b }] } = obj
console.log(a, b);
4.对象默认值解构
let { x: y = 8 } = { x: 6 }
console.log(y);
3.字符串解构
1.使用数组进行字符串解构
let [a, b, c, d, e] = 'hello'
console.log(a, b, c, d, e);
2.使用拓展运算符解构
let [...arr] = 'world'
console.log(arr);
3.使用对象解构字符串
String.prototype.toString / valueOf / length
let { toString, valueOf, length } = 'hello'
console.log(toString, valueOf, length);