为什么静态var语法有时会抛出错误,有时则不会

时间:2017-05-12 22:20:07

标签: javascript ecmascript-6

我很困惑,在不同的项目中我有时会写

class Foo {
  static BAR = {
    foobar: 'baz'
  }
}

有时这不能编译,而是我必须写

class Foo {
  static get BAR() {
    return {
      foobar: 'baz'
    }
  }
}

我真的不喜欢第二种语法,第一种语法更简洁。问题是第一个语法在一个项目中工作,而在另一个项目中它会引发语法错误,我不知道为什么。

似乎使用不同的Babel预设有效果。不同的ECMAScript版本对此有不同的定义吗?

1 个答案:

答案 0 :(得分:1)

不同之处在于,一个是静态class property,而另一个是static method,具体是一个吸气剂。类属性是Babel的stage-2 preset 1 的一部分。根据链接:

  

第2阶段:草稿

     

它是什么?规范中的第一个版本。此时,最终可能会在标准中包含该功能。

因此,类属性还不是ECMAScript的一部分,但可能会在以后的版本ECMAScript 2016中出现在规范中。另一方面,静态方法已经是ECMAScript 2015规范的一部分,所以支持ECMAScript 2015的浏览器已经允许你这样做了。

1 预设的某些阶段被描述为here,并描述某个特征所处的发展阶段。