javascript - "can' t 创建隐藏全局属性的重复变量”

标签 javascript safari ecmascript-6

在 Safari 10 上出现此错误

当 const 的名称与页面上任何元素的 id 完全相同时发生。

const abc = document.querySelector("#abc"); //err
const abz = document.querySelector("#abc"); //no err
var abc = document.querySelector("#abc"); //no err

这有什么原因吗?
我知道您可以通过 window.abc 访问元素,这是部分原因吗?

测试:

<!doctype html>
<html><body>
<div id="alpha"></div>
<script>
    const alpha = document.querySelector('#alpha');
    console.log(alpha);
</script>
</body></html>

最佳答案

这显然是 Safari 在声明与选定 id 属性共享相同名称的 let/const 变量时遇到的问题。我像你一样用 const 声明了一些变量,但得到了同样的错误。改成让,还是搞定了。更改为 var 并且有效。

关于javascript - "can' t 创建隐藏全局属性的重复变量”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091136/

相关文章:

javascript - 如何使 HTML 多选行为像始终按住控制按钮一样

带有条件的 Javascript 意外标记 {

html - YouTube 嵌入 iframe 未在 Safari 中显示

html - 有没有办法集中对齐输入字段占位符?

javascript - 扩展 `super()` 时使用 `Object`

javascript - 相当于 ES6 import 中需要一个子属性

javascript - 我的 JavaScript 的缺陷在哪里

javascript - CKEditor 不适用于自定义文件夹

iphone - 如何在 Safari 中更改 iPhone 虚拟键盘上 "Go"按钮的文本?

javascript - 从 HTML <select> 调用类构造函数