【Javscript】解构赋值

本文详细解析了ES6中的解构赋值、数组模式匹配、不完全解构、默认值设定以及对象解构的特性,包括多维数组和对象的灵活处理,以及默认值的生效条件。重点讲解了惰性求值和引用默认值的概念,并展示了在实际开发中的应用场景。
摘要由CSDN通过智能技术生成

解构赋值

数组解构赋值

    //通过数组对变量进行赋值
    let [a,b,c] = [1,2,3]
    console.log(a)
    console.log(b)
    console.log(c)

模式匹配

等号两边的模式完全相同,左边的变量就会被赋予对应的值

    let [a, [[b],c]] = [1,[[2],3]]
    console.log(a)
    console.log(b)
    console.log(c)

不完全解构

    let [x,y] = [1,2,3,4]
    console.log(x) //1
    console.log(y) //2
	let[,,z] =[1,2,3]
	console.log(z) //3

指定默认值

	let [f = true] = []
    console.log(f) //true
    let [a,b="y"] = ["a"]
    console.log(b) //y
    
    let [x = 1] = [null]
    let [y=1] =[null]
    let [z=2] = [undefined]
    console.log(x) // null
    console.log(y) // null
    console.log(z)  // 2

注:ES6内部使用===判断是否是undefined,如果是undefined,默认值才会生效

惰性求值
    function f(){
        return 'fff'
    }
    // let [x = f()] =[1]
    let [x = f()] =[]
    console.log(x) //fff
默认值可以引用其他声明过的变量
    let[x=1, y=x] =[]
    console.log(x) //1
    console.log(y) //1

    let[c=d, d=1] =[]  //Cannot access 'd' before initialization
多维数组解构
    const items = [
        ['name', '张飞'],
        ['title', '长坂坡一声吼']
    ]

    items.forEach(([key, value]) => (console.log(key, value)))

对象解构赋值

与数组不同,它与顺序无关;解构不成功会返回undefined;它真正被赋值的是后者,会先找到同名属性,赋值给后者变量。

    let person = {
        name :'tom',
        age: 6
    }

    let {age,name} = person
    console.log(age) //6
    console.log(name) //tom

    let {sex} = person
    console.log(sex)

    let {name:name1} = person
    console.log(name1) //tom

可以取到继承的属性

	const obj1 = {};
    const obj2 = {name:'tom'}
    Object.setPrototypeOf(obj1, obj2)  // =>  obj1.__proto__ = obj2
    const {name} = obj1
    console.log(name)  //tom

指定默认值

默认值的生效条件 对象属性的值 严格 === undefined

    const {x=1} = {x:undefined}
    const {y=3} ={y:null}

    console.log(x) //1
    console.log(y) // null
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值