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,不存储您设置的值。这不是任何标准的一部分。