javascript - 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 four
is an element of b
then 为什么b.length
显示为3
为什么不显示为4
?
解决方案
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
; 解构分配发生在“中间”。
推荐阅读
- c# - 我可以在验证器中使用流利验证的验证器吗
- mysql - 将逗号分隔的值拆分为多行
- javascript - 在插值绑定中向字符串添加新行
- c# - .NET WCF 服务中的 Automapper 8.0 问题
- java - OnCreateOptions 它被调用,但 OnOptionsItemSelected 它未被调用
- sql - 撤消 SQL 中的最后一次更新
- java - 在生成 Excel 或 PDF 文件作为响应的 REST API 中处理异常的正确方法是什么?
- java - PeerConnectionFactory 和 PeerConnection 是否必须在后台线程中创建和使用?
- c# - 如何在 asp.net 核心中将 DataAnnotations 从模型传输到 viewModel?
- oauth-2.0 - LinkedIn oAuth2 身份验证中的未授权范围错误