Подтвердить что ты не робот

"не может создать повторяющуюся переменную, которая затеняет глобальное свойство"

Получение этой ошибки в 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>
4b9b3361

Ответ 1

Это, по-видимому, проблема Safari с объявлением переменной let/const, которая имеет то же имя, что и выбранный атрибут id. У меня были некоторые переменные, объявленные с константой, как вы это делали, и получили ту же ошибку. Изменен, чтобы позволить и до сих пор его получить. Изменен для var и он сработал.

Ответ 2

Это должно быть связано с этой ошибкой веб-сайта

Тем временем вы можете либо заменить const на var, либо изменить имя вашей переменной (например: _alpha).

Ответ 3

Ответ Натана верен. Вместо использования var я просто изменил свой const, чтобы иметь другой случай, чем id. Итак...

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

Все еще взломанный, просто еще один вариант.