Babel编译代码中的这种语法是什么?

时间:2016-12-29 07:32:09

标签: javascript ecmascript-6 babeljs

我正在this site上阅读ES2015入门书,这个例子是computed property names给出的:

var _style;
var namespace = '-webkit-';
var style = (
  _style = {},
  _style[namespace + 'box-sizing'] = 'border-box',
  _style[namespace + 'box-shadow'] = '10px 10px 5px #888888',
  _style
);

这非常简单,但我不明白Babel正在做什么来解决这个问题。它给出了这个:

_style

(我已经重新格式化了缩进)

Online Babel Transpilation here

我无法找到有关此语法的文档:, _style对象的声明,然后是属性名称及其值的副本列表,然后在结束parthenthesis之前以$.ajax({ url: 'mail.php', type: 'post', data: $this.serialize(), success: function (data) { if ( isJSON(data) ) { // do something } else { // do something } }, error: function(){ // do something } }); 结尾。

1 个答案:

答案 0 :(得分:6)

在JavaScript中,由于comma operator,括号中的表达式从左到右执行,最后一个表达式的结果将作为结果返回。例如,

keydown

将在三行中打印1,2和3。最后一个值console.log( (console.log(1), console.log(2), 3) );将作为表达式的结果返回,并由外部3打印。

同样,

console.log

下面,

var style = (
  _style = {},
  _style[namespace + 'box-sizing'] = 'border-box',
  _style[namespace + 'box-shadow'] = '10px 10px 5px #888888',
  _style
);

创建一个对象并将其分配给 _style = {},

_style

创建一个新属性 _style[namespace + 'box-sizing'] = 'border-box', 并为其分配值

namespace + 'box-sizing'

与上述相同,最后, _style[namespace + 'box-shadow'] = '10px 10px 5px #888888', 将作为评估结果返回。

最后,您将获得一个具有两个属性的对象,该对象绑定到变​​量_style