"не может создать повторяющуюся переменную, которая затеняет глобальное свойство"
Получение этой ошибки в 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>
Ответы
Ответ 1
Это, по-видимому, проблема Safari с объявлением переменной let/const, которая имеет то же имя, что и выбранный атрибут id. У меня были некоторые переменные, объявленные с константой, как вы это делали, и получили ту же ошибку. Изменен, чтобы позволить и до сих пор его получить. Изменен для var и он сработал.
Ответ 2
Это должно быть связано с этой ошибкой веб-сайта
Тем временем вы можете либо заменить const
на var
, либо изменить имя вашей переменной (например: _alpha).
Ответ 3
Ответ Натана верен. Вместо использования var я просто изменил свой const, чтобы иметь другой случай, чем id. Итак...
const Abc = document.querySelector("#abc");
Все еще взломанный, просто еще один вариант.