JavaScript变量定义混乱

Ani*_*ita 1 javascript

我有2个javascript代码.除此之外,检查varable是否等于null或变量类型是否未定义.但在一种情况下,我得到错误,在其他情况下,我没有得到任何错误.

代码1:

if (NS1 === null || typeof (NS1) === 'undefined') {
    ...  }
Run Code Online (Sandbox Code Playgroud)

代码2:

 if (window.NS1 === null || typeof (window.NS1) === 'undefined') {
  ...   }
Run Code Online (Sandbox Code Playgroud)

对于代码1,我收到错误

NS1未定义

而对于代码2,我没有得到任何错误.我不明白可能是什么原因,因为我没有定义NS1或window.NS1.所以我应该在这两种情况下都会出错.

Fel*_*ing 6

所以我应该在这两种情况下都会出错.

试图访问1分未声明的变量在基准误差的结果.但是,尝试访问不存在的属性(就像在第二个示例中一样)将只返回undefined,而不是抛出错误:

> console.log({}.foo);
undefined
Run Code Online (Sandbox Code Playgroud)

这就是JavaScript的工作原理.


1:有人可能会说你正在访问变量typeof NS1.虽然这是真的,但typeof很特别."undefined"即使未声明变量,它也会返回.