let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = [‘a‘];//a==>‘a‘ y==>undefined z==> [] let [a, [b], d] = [1, [2, 3], 4];//a==>1 b==>2 c==>4 let[a,b]=[1,2,3];//a==>1 b==>2
数组中变量左右两边一对一对应:
let[a,b,c]=[1,2,3];//a==>1 b==>2 c==>3
let[a,[[b],c]]=[1,[[2],3]];//a==>1 b==>2 c==>3
变量左边数量低于右边
let[a,b,]=[1,2,3];//a==>1 b==>2let[a,,c]=[1,2,3];//a==>1 c==>3let [a, [b], d] = [1, [2, 3], 4];//a==>1 b==>2 c==>4
左边数量多于右边数量,匹配不到数值变量均为undefined
let[a,b,c]=[1,,3];//a==>1 b==>undefined c==>3
特殊:arr为数组
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4]let[a,...arr]=[1,];//a=>1 arr=>[]
同时解构赋值可以使用默认值
注:只有当数组成员严格等于undefined时,默认值才有效
let[a,b=‘b‘]=[‘a‘];//a==>‘a‘ b==>‘b‘ let[a,b=‘b‘]=[‘a‘,undefined];//a==>‘a‘ b==>‘b‘ let[a=1]=[null];//a==>null let[a=1]=[];//a==>1; let[a=1]=[undefined];//a==>1
如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值
function f() { console.log(‘aaa‘); } let [x = f()] = [1];//x==>1; let[y=f()]=[]; y;//此时就y就相当于f();即结果为aaa
默认值可以引用解构赋值的其他变量,但该变量必须已经声明。
let[a=1,b=a]=[];//a==>1 b==>2 let[a=b,b=1]=[];//报错
原文地址:https://www.cnblogs.com/kongbaifeiye/p/11967332.html
时间: 2024-10-01 04:04:19