gpt4 book ai didi

javascript - ES2022 私有(private)静态方法的 Chrome 和 Safari 之间的行为差​​异

转载 作者:行者123 更新时间:2023-12-05 00:38:52 25 4
gpt4 key购买 nike

以下 JavaScript 代码可在 Safari 和 Chrome 中运行,但结果不同。
我想知道为什么会这样。

<script>
class Bar {
'use strict';
baz() {
return new Promise((resolve) => {
resolve();
}).then(() => {
return [2];
});
}
}
new class {
'use strict';
#foo = 1;
constructor() {
console.log(this.#foo); // 1
(new Bar()).baz()
.then((res) => {
console.log(res); // [2]
console.log(this.#foo); // 1
[this.#foo] = res;
console.log(this.#foo); //*** Chrome: 2, Safari: 1 ***
});
}
}
</script>
请注意,如果您将 #foo 声明为 foo 而不是私有(private)静态方法,则两者的最终结果都是 2。
Chrome 97.0.4692.99
Safari 15.3 (17612.4.9.1.5)
macOS 蒙特雷版12.2
MacBook Air (M1,2020)
然后:
听说下个版本会修复。
https://webkit.org/blog/12193/release-notes-for-safari-technology-preview-139/

最佳答案

我能够重现所描述的行为并将代码简化为:

(() => new class {
#foo = 1;
constructor() {
[this.#foo] = [2];
console.log(this.#foo); //*** Chrome: 2, Safari: 1 ***
}
})();

这看起来很像 JavaScriptCore/Safari 中的错误。

关于javascript - ES2022 私有(private)静态方法的 Chrome 和 Safari 之间的行为差​​异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70937094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com