JavaScript 类中的静态变量在 Chrome 70 中引发错误

Static variable in JavaScript class throws an error in Chrome 70

提问人:MOHAMED SIKKANDAR AFZAL M 提问时间:10/31/2023 最后编辑:Peter MortensenMOHAMED SIKKANDAR AFZAL M 更新时间:11/1/2023 访问量:64

问:

考虑:

class Welcome{
   static name="something"; // Throws an error
}

MDN 表示将从 Chrome 42 开始支持。但它在 Chrome 70 及以下版本中抛出语法错误。static

JavaScript ecmascript-6 ES6 类 静态变量

评论

2赞 VLAZ 10/31/2023
CanIUse 说版本 72。似乎MDN浏览器数据已关闭。
1赞 Bergi 10/31/2023
@VLAZ MDN 也说 72。它是 chrome 42 引入es 中的静态方法语法
2赞 Bergi 10/31/2023
您使用的 Chrome 浏览器已超过 4 年吗?
2赞 InSync 10/31/2023
@Bergi 可能是一个不幸的 Web 开发人员必须支持旧版浏览器?
3赞 Bergi 10/31/2023
@InSync我见过很多旧版环境,但没有一个是旧版 Chrome

答:

0赞 David Teo 10/31/2023 #1

要解决这个问题,你可以使用像 Babel 这样的转译器

转译器将用较新版本的 JavaScript 编写的代码转换为较旧的、更广泛支持的语法。

2赞 trincot 11/1/2023 #2

MDN 表示 Chrome 42 将支持静态。

MDN Web Docs 在这里没有详细描述,因为本文涉及静态类方法、静态块和静态类字段。Chrome 版本 42 中并非都支持这些不同的用途。对静态类字段的支持是后来才出现的。在 MDN Web Docs 页面上,它提到了 Chrome 版本 72:static

enter image description here

如果浏览器不支持静态类字段,则可以改用以下代码:

function defineStaticField(cls, prop, value) {
    Object.defineProperty(cls, prop, { 
        value, 
        writable: true,
        configurable: true,
        enumerable: true,
    });
}

class Welcome{
}

defineStaticField(Welcome, "name", "something");

评论

0赞 Bergi 11/1/2023
...或者真的只是(好吧,也许除了名字之外的任何其他事情Welcome.name = "something")
0赞 trincot 11/1/2023
事情就是这样:他们的例子是 .name