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

Javascript 为什么静态var语法有时抛出错误,有时不抛出错误,javascript,ecmascript-6,Javascript,Ecmascript 6,我很困惑,在不同的项目中我有时会写 class Foo { static BAR = { foobar: 'baz' } } 有时候这是无法编译的,我不得不写 class Foo { static get BAR() { return { foobar: 'baz' } } } 我真的不喜欢第二种语法,第一种更简洁。问题是,第一个语法在一个项目中有效,而在另一个项目中它抛出了一个语法错误,我不知道为什么 使用不同的巴别塔预设似乎有效果。不同

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

class Foo {
  static BAR = {
    foobar: 'baz'
  }
}
有时候这是无法编译的,我不得不写

class Foo {
  static get BAR() {
    return {
      foobar: 'baz'
    }
  }
}
我真的不喜欢第二种语法,第一种更简洁。问题是,第一个语法在一个项目中有效,而在另一个项目中它抛出了一个语法错误,我不知道为什么


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

区别在于一个是静态的,而另一个是特定的getter。类属性是巴别塔1的一部分。根据链接:

第二阶段:草稿

它是什么?规范的第一个版本。在这一点上,很可能最终将该特性包含在标准中

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



1对预设的特定阶段进行了描述,并描述了特定功能所处的开发阶段。

您的两个定义并不完全相同。在第一个示例中,您可以执行
Foo.BAR.foobar='whatever'
,但在第二个示例中,它只是一个getter,不存储您设置的值。这不是任何标准的一部分。