Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;can';t创建覆盖全局属性的重复变量";_Javascript_Safari_Ecmascript 6 - Fatal编程技术网

Javascript &引用;can';t创建覆盖全局属性的重复变量";

Javascript &引用;can';t创建覆盖全局属性的重复变量";,javascript,safari,ecmascript-6,Javascript,Safari,Ecmascript 6,在Safari 10上获取此错误 当常量的名称与页面上任何元素的id完全相同时发生 const abc = document.querySelector("#abc"); //err const abz = document.querySelector("#abc"); //no err var abc = document.querySelector("#abc"); //no err 这有什么原因吗? 我知道您可以通过window.abc访问元素,这是为什么的一部分吗 测试: const

在Safari 10上获取此错误

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

const abc = document.querySelector("#abc"); //err
const abz = document.querySelector("#abc"); //no err
var abc = document.querySelector("#abc"); //no err
这有什么原因吗?
我知道您可以通过window.abc访问元素,这是为什么的一部分吗

测试:


const alpha=document.querySelector('#alpha');
控制台日志(alpha);

这显然是Safari在声明与所选id属性同名的let/const变量时遇到的问题。我和你一样用const声明了一些变量,得到了同样的错误。改成了出租,但还是得到了。已更改为var,并已生效。

必须将其链接到


同时,您可以用
var
替换
const
,或者更改变量的名称(例如:_alpha)。

Nathan的答案是正确的。我没有使用var,而是将const改为与id不同的case。所以

const Abc = document.querySelector("#abc"); 

还是很黑,只是另一种选择

(STP10.1)呃,那是JSFIDLE。尝尝生的?我会发布一个测试。刚刚在STP上试过,同样的错误。我可以用HTML复制,谢谢。如果在
setTimeout
回调中运行
const alpha…
,则不会发生错误。它看起来像Safari中的临时绑定bug。我想这就是为什么小提琴没有击中它。@joews但是
setTimeout
中的
const
将作用于超时后调用的回调函数,而不是全局作用域,因此它与这个问题没有真正的关系。谢谢,你的回答解决了我今天的Safari问题。我想让大家知道我更讨厌狩猎而不是IE!哇!这太可怕了。。。一年后,仍然没有修复。。。safari会成为新的IE吗???我没话说了。只是哇!快速搜索并替换const到var修复了它。
const Abc = document.querySelector("#abc");