【问题标题】:ES6 fail-soft destructuringES6 故障软解构
【发布时间】:2016-01-02 14:49:49
【问题描述】:

在Babel网站上,在解构范围内找到如下demo:

// Fail-soft destructuring
var [a] = [];
a === undefined; 

用 Babel 转译这段代码后,我在 ES5 中得到以下结果:

"use strict";

var _ref = [];
var a = _ref[0];

什么是软故障解构,转译语法背后的逻辑是什么?编辑:为什么 Babel 以这种方式转换 ES6 代码,而不是仅仅将 undefined 分配给变量?

编辑: 我明白了,我猜它只是将变量值放入undefined,而不是抛出错误。不过,对转译逻辑仍有一些疑问。

【问题讨论】:

  • 为什么数组的内容会影响转译?
  • @zeroflagL 完全没有理由,我的想法完全错误,认为这个软解构的东西有一些复杂/特别的东西,忘记了我们只是分配一个数组- 哼。没想到就是这么简单的事情。

标签: javascript ecmascript-6


【解决方案1】:

看看当你在示例中添加更多内容时会发生什么:

var [a, b, c] = [];

转译为:

"use strict";

var _ref = [];
var a = _ref[0];
var b = _ref[1];
var c = _ref[2];

a 得到第一件事,b 第二件事,依此类推。

【讨论】:

  • 也许我提出了我的问题。我的实际问题是为什么 Babel 以这种方式执行转译。我会改写。
  • 已更新为正确答案...我第一次考虑的是对象,而不是数组。
  • 当然这么明显,不知道为什么我没看到。谢谢:-)
猜你喜欢
  • 2017-03-12
  • 2011-10-16
  • 2018-11-28
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
相关资源
最近更新 更多