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