我有2个javascript代码。除此之外,检查varable是否等于null或变量类型是否未定义。但在一种情况下,我会收到错误,在其他情况下,我不会收到任何错误。
代码1:
if (NS1 === null || typeof (NS1) === 'undefined') {
... }
代码2:
if (window.NS1 === null || typeof (window.NS1) === 'undefined') {
... }
对于代码1,我收到错误
NS1未定义
而对于代码2,我没有收到任何错误。我不明白可能是什么原因,因为我没有定义NS1或window.NS1。所以我应该在这两种情况下都会出错。
答案 0 :(得分:6)
所以我应该在这两种情况下都会出错。
尝试访问 1 未声明的变量会导致参考错误。但是,尝试访问不存在的属性,就像在第二个示例中一样,只返回undefined
,而不是抛出错误:
> console.log({}.foo);
undefined
这就是JavaScript的工作原理。
1:有人可能会说你在typeof NS1
时也在访问变量。虽然这是真的,typeof
很特别。即使未声明变量,它也会返回"undefined"
。
答案 1 :(得分:0)
因为null === undefined // --> false
NS1 === null
是指未定义的变量 NS1 ,因此会抛出异常。
但window.NS1 === null
将评估为 false ,因为 window.NS1 未定义。 undefined不等于null
NS1 作为未声明的变量 - >例外
window.NS1 作为未声明的属性 - >未定义