Javascript 为什么未定义的全局变量会引发异常,而通过窗口访问则不会?
行为 我有一个名为Javascript 为什么未定义的全局变量会引发异常,而通过窗口访问则不会?,javascript,Javascript,行为 我有一个名为InfoPanel的全局变量。如果我试图通过InfoPanel引用未定义的文件,它会因未定义而引发未捕获的引用错误。但是,如果我通过window.InfoPanel引用它,它会像预期的那样返回未定义的 问题 为什么InfoPanel!==未定义的引发异常,但window.InfoPanel!==未定义的是否按预期工作 对于询问代码的用户:这是因为当您尝试全局访问InfoPanel时,它会尝试查找不存在的变量。所以它会抛出一个异常 执行window.InfoPanel操作时,它试
InfoPanel
的全局变量。如果我试图通过InfoPanel
引用未定义的文件,它会因未定义而引发未捕获的引用错误。但是,如果我通过window.InfoPanel
引用它,它会像预期的那样返回未定义的
问题
为什么InfoPanel!==未定义的
引发异常,但window.InfoPanel!==未定义的
是否按预期工作
对于询问代码的用户:这是因为当您尝试全局访问InfoPanel
时,它会尝试查找不存在的变量。所以它会抛出一个异常
执行window.InfoPanel
操作时,它试图访问对象属性(window
对象的InfoPanel
属性)
第二个表单不会引发异常。为什么会有否决票?因为您描述的代码没有显示出来。显示足够的代码,以便有人能够重现您描述的错误情况。InfoPanel!==如果未声明,undefined将抛出,在这种情况下,您没有声明的InfoPanel变量。@BilltheLizard我不明白为什么需要更多代码。这不是一个关于任何特定代码的问题,而是关于可变访问的问题,我已经展示了我所经历的两种方式。请将您的代码直接放在您的问题中,而不是放在另一个站点的链接后面(不是每个人都可以访问)。啊,我认为这是有意义的。我会接受这个答案,一旦它让我。我试图找到更多的资源,这样我可以有一个更丰富的答案。