解构赋值

1.基本用法

1.数组的解构
const [a, b] = [10, 100]
//a = 10
//b = 100
注意:因为数组没key,所有解构出来的a, b可以任意取名然后使用
2.对象的结构
const obj = {
    name: "Roven",
    age: 30
}
const { name, age } = obj
//name = 'Roven'
//age = 30
注意:解构的name, age必须对应目标对象obj, 如果没有值,为undefined

2.默认值

1.数组的默认值
const [a = 10, b = 20, c = 30] = [100, 200]
//a = 100
//b = 200
//c = 30
注意:当解构项多于目标数组本身,默认值从原来的undefined -> 设置的默认值
1.对象的默认值
const obj = {
    name: "Roven",
    age: 30
}
const { name = 'curry', age = '20', gender = '男' } = obj
//name = 'Roven'
//age = 30
//gender = '男'
注意:与数组相同

3.字符串的解构赋值

const str = 'hello world'
const [a, b, c, d, e, f, g] = str
//h, e, l, l, o, , w
注意:字符串类似于数组

4.函数参数的解构赋值

(1) 参数是对象
const obj = {
    a: 100,
    b: 200
}
function fn({a, b}){
    return a + b
}
const sum = fn(obj)
console.log(sum)
//sum = 300

(2) 参数为数组
const arr = [100, 300]
function fn2([a, b]){
    return a + b
}
const sum2 = fn2(arr)
console.log(sum2)
//sum2 = 400

5.解构重命名

const obj = {
    name: "cuury",
    age: 30
}
const { name, age:currentAge } = obj
console.log(name, currentAge)
//curry, 30
注意:重命名后不能使用命名前的变量名称

6. 应用场景

1. 交换变量
let x = 1
let y = 2
console.log([x, y]) //[1, 2]
console.log([x, y] = [y, x])  //[2, 1]

2. 结构函数返回值
function fn(){
    return {
        name: "curry",
        age: 30
    }
}
const { name, age } = fn()

3. 函数默认值
function fn({ name = 'curry', age = 30 }){ ... }

4. 遍历 Map 结构
const map = new Map()
map.set("name", "curry")
map.set("age", 30)
for( const [key, value] of map ){
    console.log([key])  //["name"] ["age"]
    console.log([, value])  //["empty", "curry"] ["empty", 30]
    console.log([key, value])  // ["name", "curry"] ["age", 30]
}
posted @ 2022-03-24 15:44  SKa-M  阅读(87)  评论(0编辑  收藏  举报