El siguiente código JavaScript funcionará tanto en Safari como en Chrome, pero con resultados diferentes.
Me gustaría saber por qué sucede esto.
<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>Tenga en cuenta que si declara #foo como foo en lugar de métodos estáticos privados, el resultado final será 2 para ambos.
cromo 97.0.4692.99
Safari 15.3 (17612.4.9.1.5)
versión de macOS Monterey. 12.2
MacBook Air (M1,2020)
después:
Escuché que se solucionará en la próxima versión.
https://webkit.org/blog/12193/release-notes-for-safari-technology-preview-139/
Pude reproducir el comportamiento descrito y reducir el código a esto:
(() => new class { #foo = 1; constructor() { [this.#foo] = [2]; console.log(this.#foo); //*** Chrome: 2, Safari: 1 *** } })();Esto se parece mucho a un error en JavaScriptCore/Safari.