奇怪的问题
问题描述:
,当我把console.log
在浏览器控制台其中有未申报的,将返回未捕获的ReferenceError任何变量:变量没有定义。但是当我在浏览器控制台把console.log(name)
返回空和未定义。看到下面的图片。任何想法,为什么发生这种情况..奇怪的问题
我在Chrome和Firefox开发者工具进行了测试。
注:我使用clear()来清除控制台
答
不具有连接到该窗口并在控制台日志或浏览器仍在工作
name
是一个全局变量这是在window
对象。所以当你登录时,它会发现全局的,这个值是空字符串(""
)。
console.log(name);
console.log(window.name);
答
什么是一个全局对象,在这种情况下,你在你的控制台打印window.name。
尝试检查这种方式,在控制台中键入下面的代码:
window.name = '*';
然后再次尝试做的console.log(名称),你会看到这个时候你看到“计算器”。所以基本上你在你的控制台打印的名字,是窗口名称...
有关window.name更多信息,请访问以下链接:
https://developer.mozilla.org/en-US/docs/Web/API/Window/name
答
这是发生了什么事时,您键入声明console.log(name)
:
- 你正试图从全球执行上下文(登录到控制台在您的案件)中访问变量
name
。 - 由于您是从全局执行上下文中调用它,它将检查
window
对象是否具有名为的属性,因为在浏览器中,全局范围由window
对象表示。 - 因为你以前从未声明过这个变量,所以打字
window.name
或者只是name
应该返回姓名未定义。 - 但它返回一个空行,这是因为
window
对象具有一组预定义/本机属性,名称就是其中之一。 -
window.name
缺省值为“”(空字符串),因此它将一个空字符串记录到控制台。
现在,这是发生了什么事,当你键入console.log(name100)
:
和以前一样(name100而不是名称)。
和以前一样(name100代替名字)。
您还没有声明name100,它既不是窗口对象的本地属性,所以它只是返回
name100 is not defined
。
如果是随窗口对象,你可以检查此链接,你想检查属性:
'name'is不是未定义它的'“”(空字符串)。 'undefined'是'console.log'本身的rturned值(注意空行和'''undefined'前面)! –