es6的变量解构赋值

本文介绍了ES6中的变量解构赋值概念,包括其含义和限制。解构赋值允许按照一定模式从数组和对象中提取值并赋值给变量。然而,当解构的对象为`undefined`或`null`时,会报错。同时,解构赋值要求等号右侧必须可迭代。还探讨了默认值、属性次序无关、变量名与属性值不一致等情况,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解构的含义

按照一定的模式,从数组和对象中取值,对变量进行赋值,称为解构。解构赋值时,只要等号两边不是对象,就先将其转换成对象。
可以说这种方式就是等号两边的解构相同,左边的变量就会被赋予右边的对应值。

代码演示:

数组:

 let [a,b,c] = [10,20,30];
console.log(a,b,c);   ==>   输出结果:10,20,30


对象:
let {a,b,c,d} = {a:'你',b:'真',c:'好',d:'看'};
console.log(a,b,c,d);   ==>   输出结果:'你'  '真'  '好'  '看'

解构的限制

1)undefined与null 无法转换成对象,解构赋值会报错。 ==> Cannot destructure property a of ‘undefined’ or ‘null’.

2)
let [a] = 10;
console.log(a);
这种赋值方式会报错 ==> 10 is not iterable。原因:等号的右边不是数组,转换对象以后不具备 Iterator接口,或本身就不具备Iterator接口

3)左边参数允许默认值
let [a,b,c=30] = [10,20];
console.log(a,b,c); ==> 输出结果:10 20 30

4)对象解构赋值属性没有次序,赋值的时候会给对应的属性名进行赋值。
let {a,b,c,d} = {a:10,c:303,d:20,b:10};
console.log(a,b,c,d) ==> 输出结果:10 10 303 20

5)变量名与属性值不一致,是给属性值进行赋值
let {a:b}={a:'12', c:'32'};
console.log(a); ==> 输出结果: a is not defined
console.log(b); ==> 输出结果:12
这种情况是为a的属性值b进行赋值

6)将一个已有变量进行解构赋值
let a
({a} = {b:1});
console.log({a} = {b:1}); ==> 输出结果:{b: 1}
({a}={b:1}):必须要加括号,避免JS在解析过程中将{ } 解析成代码块。

7)字符串解构赋值,会将字符串拆分开,把每一项赋值给对应变量
let [a,b,c] = 'hello world';
console.log(a,b,c); ==> 输出结果:‘h’ ‘e’ ‘l’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值