【问题标题】:Difference between window.someRandomVar vs someRandomVarwindow.some Random Bar 和 some Random Bar 之间的区别
【发布时间】:2017-10-17 13:47:04
【问题描述】:

如果在当前范围内没有找到变量,JS引擎会寻找父分数,直到它到达全局范围。

现在,如果我在下面尝试,在浏览器中

console.log(someRandomVariable); 
// This throws ReferenceError as someRandomVariable is Not found on Global/Window scope.

但是当我在窗口对象上显式调用它时,它显示为未定义。

console.log(window.someRandomVariable)

根据我的理解,前者也在搜索窗口对象,因为它不在任何函数范围内。

为什么它有两种不同的行为?

【问题讨论】:

    标签: javascript referenceerror


    【解决方案1】:
    console.log(someRandomVariable); 
    

    Javascript 查找someRandomVariable,在任何范围内都找不到它并抛出您所看到的异常。您说搜索窗口范围是正确的 - 但您没有在窗口(或任何)范围中定义此变量。所以它失败了。

    console.log(window.someRandomVariable)
    

    Javascript 查找 window 变量。它成功了,然后转到someRandomVariable 属性。这没有定义,所以你得到undefined

    值得注意的是,如果您尝试访问未定义变量的属性,您也会收到错误消息。即,试试window.someRandomVariable.someRandomVariable


    不同的是,一个是变量查找,一个是属性访问。

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多