数组的解构赋值

数组的解构赋值

基本用法

let a = 1;
let b = 2;
let c = 3;
//上面为解构前代码,下面为解构后
let [a,b,c]=[1,2,3];
1、解构赋值属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
2、只要某种数据接口具有Iterator(迭代器)接口,都可以采用数组形式的解构赋值
3、如果解构不成功,变量的值就等于undefined。

示例:

let [a,b,c]=[1,2,3];   //a=1;b=2;c=3
let [b, f] = [1];   //b = 1; f = undefined;
let [x, , y] = [1, 2, 3];  //x=1;y=3;
let [x] = [];  //x = undefined;
let [, , z] = ["faa", "aaa", "baz"];  //z="baz"
let [x, y, ...z] = ['a'];  //x= 'a';y=undefined;z=[];
let [x, ...y] = [1, 2, 3, 4];  //x=1;y=[2,3,4];
	没有变量接收的解构值会被忽略掉。如下:
let [a, [b], d] = [1, [2, 3], 4];//a=1;b=2;d=4;因为b后面没有变量所以3被忽略
	赋值不是数组则会报错
let [foo] = 1;//右边的1不在数组里,报错

默认值

	解构赋值允许指定默认值。
let [foo = true] = [];//foo=true;
let [x, y = 'b'] = ['a'];//x='a';y='b';
let [m, n = 'b'] = ['a', undefined];//m='a';n='b';
	如果默认值是一个表达式,会采用惰性求值,只有在用到时才会求值。
function f() {
console.log("afcaf");
return 55;
}
let [x = f()] = [1];//x=1;
	默认值可以引用解构赋值的其他变量,但改变量必须已经声明,否则会报错。
let [x = 1, y = x] = [];//x=1;y=1;
let [x = 1, y = x] = [2];//x=2;y=2;
let [x = 1, y = x] = [1, 2];//x=1;y=2;
let [x = y, y = 1] = [];x=1;y=1;

对象的解构赋值与数组的区别

 数组的元素是按次序排列的,变量的取值是由它的位置决定。
 对象的属性没有次序,变量必须与属性同名才能取到正确的值。
let { bar, foo } = { foo: "aaa", bar: "bbb" };//bar='bbb';foo='aaa';
let { bar } = { foo: "aaa", bar: "bbb" };//bar='bbb';
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值