"无法创建隐藏全局属性的重复变量"

Hou*_*272 16 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
Run Code Online (Sandbox Code Playgroud)

是否有一个原因?
我知道你可以通过window.abc访问元素,这是为什么的一部分?

测试:

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

小智 31

这显然是Safari在声明一个与所选id属性共享同一名称的let/const变量时遇到的问题.我有一些变量用const声明,并得到了同样的错误.改变让我们仍然得到它.改为var并且工作正常.

  • 谢谢,你的答案解决了我今天的Safari问题.我想要的状态是我比IE更讨厌Safari! (3认同)

vin*_*yll 6

这必须与此webkit错误相关联

在此期间,您既可以替换const通过var,或者改变您的变量的名称(例如:_alpha).