首页 > 解决方案 > Javascript数组解构

问题描述

在玩数组解构时注意到 Javascript 的一个有趣行为,例如:

let a = [1, 2, 3];
let b = [one, two, three, four = 4] = a

console.log(one, two, three, four)
console.log(b)

当我说a.length 输出3
如果我说b.length 输出3.
但是,如果我说four 输出4.
If fouris an element of bthen 为什么b.length显示为3为什么不显示为4

标签: javascriptarrays

解决方案


four不是b( 是a) 的元素。您在=4那里使用默认值功能;它没有被分配到b.

通过 Babel REPL 运行您的代码,以消除这种解构的糖分,我们会得到类似的结果:

var _a, _a$;

var a = [1, 2, 3];
_a = a;
one = _a[0];
two = _a[1];
three = _a[2];
_a$ = _a[3];
four = _a$ === void 0 ? 4 : _a$;
var b = _a;

如您所见,b最终只是被分配_a,即a; 解构分配发生在“中间”。


推荐阅读