当我为未声明的浏览器控制台中的任何变量添加console.log
时,它将返回未捕获的ReferenceError:未定义变量。但是当我将console.log(name)
放入浏览器时console它返回空和未定义。见下图。任何想法为什么会发生这种情况..
我在Chrome和Firefox开发者工具中对其进行了测试。
注意:我使用clear()清除控制台
答案 0 :(得分:8)
name
是window
对象中的全局变量。因此,当您进行记录时,它会查找全局值,在您的情况下,其值为空字符串(""
)。
console.log(name);
console.log(window.name);
答案 1 :(得分:2)
任何没有附加窗口但仍在控制台日志或浏览器中工作的内容都是全局对象,在这种情况下,您将在控制台中打印window.name。
尝试以这种方式检查,在控制台中输入以下代码:
window.name = 'stackoverflow';
然后尝试再次执行console.log(name),这次你会看到'stackoverflow'。所以基本上你在控制台中打印的名称是窗口名称......
有关window.name的更多信息,请访问以下链接:
https://developer.mozilla.org/en-US/docs/Web/API/Window/name
答案 2 :(得分:2)
这是键入语句console.log(name)
时发生的事情:
name
(在您的情况下登录到控制台)。window
对象是否具有名为name的属性,因为在浏览器中,全局范围由window
对象表示。 window.name
或仅name
应返回名称未定义。window
对象有一组预定义/本机属性,名称就是其中之一。window.name
默认值为“”(空字符串),因此它会将空字符串记录到您的控制台。现在,当您输入console.log(name100)
:
与之前相同(name100而非名称)。
与之前相同(name100而非名称)。
您没有声明name100也不是窗口对象的原生属性,因此只返回name100 is not defined
。
如果您想检查窗口对象附带的属性,可以查看以下链接: