console.log возвращает HTML-элемент, если переменная не существует - PullRequest
0 голосов
/ 24 сентября 2018

Я полностью сбит с толку поведением 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=.Но также: делать это не рекомендуется.

1 Ответ

0 голосов
/ 24 сентября 2018

Это потому, что у вас есть тег Div с тем же идентификатором, и поскольку "bon" нигде не был инициирован на странице.Таким образом, «бон» автоматически относится к тегу Div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...