繁体   English   中英

console.log(名称)中的奇怪问题

[英]Weird issue in console.log(name)

当我为未声明的浏览器控制台中的任何变量添加console.log ,它将返回Uncaught ReferenceError:未定义变量 。但是当我将console.log(name)放入浏览器控制台时,它返回空和未定义。 见下图。 任何想法为什么会这样的..

在此输入图像描述

我在Chrome和Firefox开发人员工具中测试了它。

注意:我使用clear()来清除控制台

namewindow对象中的全局变量。 因此,当您记录时,它会查找全局值,在您的情况下,其值为空字符串( "" )。

 console.log(name); console.log(window.name); 

任何没有附加窗口但仍在控制台日志或浏览器中工作的东西都是全局对象,在这种情况下,您将在控制台中打印window.name。

尝试以这种方式检查,在您的控制台中,键入以下代码:

window.name = 'stackoverflow';

然后尝试再次执行console.log(name),这次你会看到'stackoverflow'。 所以基本上你在控制台中打印的名称是窗口名称......

有关window.name的更多信息,请访问以下链接:

https://developer.mozilla.org/en-US/docs/Web/API/Window/name

这是键入语句console.log(name)时发生的情况:

  1. 您正尝试从全局执行上下文中访问变量name (在您的情况下登录到控制台)。
  2. 由于您是在全局执行上下文中调用它,因此它将检查window对象是否具有名为name的属性,因为在浏览器中,全局范围由window对象表示。
  3. 既然您之前从未声明过该变量,那么键入window.name或只是name应返回名称未定义
  4. 但它返回一个空白行,这是因为window对象有一组预定义/本机属性,名称就是其中之一。
  5. window.name默认具有值“”(空字符串),因此它将空字符串记录到您​​的控制台。

现在,当您键入console.log(name100)时,就会发生这种情况:

  1. 与之前相同(name100而不是name)。

  2. 与之前相同(name100而不是name)。

  3. 您没有声明name100也不是它是窗口对象的本机属性,因此它只是返回name100 is not defined

如果您想检查窗口对象附带的属性,可以查看以下链接:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM