如果变量不存在,console.log返回html元素

时间:2018-09-24 11:05:22

标签: javascript html console global-variables

当输出一个不存在的变量时,我对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>

给出预期的输出:

  

未定义
  不好

我错过了什么吗?或者这意味着控制台如果找不到变量本身,只会从DOM返回具有相同ID的元素?

修改

正如Chris G所指出的,答案是here。如今,人们可以使用ID来引用全局空间中的HTML元素,而无需将其分配给var=。但也:不建议这样做。

1 个答案:

答案 0 :(得分:1)

这是因为您有一个具有相同ID的Div标签,并且在页面的任何地方都没有启动“ bon”。因此,“ bon”自动表示Div标签。