Я полностью сбит с толку поведением console.log()
при выводе несуществующей переменной.
Я случайно зарегистрировал несуществующую переменную bon
.Но консоль не показала "undefined"
, как ожидалось, а <div id="bon">
.
Поиск, где была установлена переменная (как я не устанавливал ее, и она должна была быть глобальной, так как она появляласьвнутри функции), я удалил все javascript, css и html, пока ничего не осталось вообще:
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<div id="bon">a</div>
<script>
console.log(bon);
</script>
</body>
</html>
Тестирование в Firefox, Chrome, Explorer 11, Edge, Safari, все они вернули:
Изменение скрипта на
<script>
function foo(){
console.log(bon);
}
foo();
</script>
дало тот же результат.
Только это
<script>
console.log(bon);
var bon="not bon";
console.log(bon);
</script>
дал ожидаемый результат:
undefined
not bon
Я что-то упустил или это означает, что консоль просто возвращает элементиз DOM с тем же идентификатором, если он не может найти саму переменную?
Edit
Как указал Крис Дж, ответ найден здесь.Оказывается, в настоящее время можно использовать идентификаторы для ссылки на элементы HTML в глобальном пространстве, не назначая их var=
.Но также: делать это не рекомендуется.