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

时间:2016-10-17 16:14:36

标签: javascript safari ecmascript-6

在Safari 10上出现此错误

当const的名称与页面上任何元素的class BookInline(admin.StackedInline): model = Book class BookstoreAdmin(admin.ModelAdmin): model = Bookstore inlines = [BookInline,] 完全相同时,就会发生。

id

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

测试:

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

3 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:6)

必须与this webkit bug

相关联

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

答案 2 :(得分:0)

内森的回答是正确的。而不是使用var我只是将我的const更改为具有与id不同的大小写。所以...

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

还是hacky,只是另一种选择。