【发布时间】:2016-12-29 07:32:09
【问题描述】:
我正在阅读this site 的 ES2015 入门,这个例子是针对 computed property names 给出的:
const namespace = '-webkit-';
const style = {
[namespace + 'box-sizing'] : 'border-box',
[namespace + 'box-shadow'] : '10px10px5px #888888'
};
这很简单,但我不明白 Babel 正在做什么来转换它。它给出了这个:
var _style;
var namespace = '-webkit-';
var style = (
_style = {},
_style[namespace + 'box-sizing'] = 'border-box',
_style[namespace + 'box-shadow'] = '10px 10px 5px #888888',
_style
);
(我已经重新格式化了缩进)
Online Babel Transpilation here
我找不到有关此语法是什么的文档:_style 对象的声明,然后是属性名称及其值的括号中的列表,然后在结束括号前简单地以, _style 结尾。
【问题讨论】:
-
仅供参考,comma operator 一直存在于 ECMAScript 中,它对 ES6 来说并不新鲜。
-
谢谢@FelixKling :-) 我现在在答案中包含了对逗号运算符的引用。
-
确实有人想知道为什么编译器会费心创建
_style对象。好像很浪费他们可以初始化var style = {};,然后添加每个属性。
标签: javascript ecmascript-6 babeljs