我有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.所以我应该在这两种情况下都会出错.
所以我应该在这两种情况下都会出错.
试图访问1分的未声明的变量在基准误差的结果.但是,尝试访问不存在的属性(就像在第二个示例中一样)将只返回undefined,而不是抛出错误:
> console.log({}.foo);
undefined
Run Code Online (Sandbox Code Playgroud)
这就是JavaScript的工作原理.
1:有人可能会说你正在访问变量typeof NS1.虽然这是真的,但typeof很特别."undefined"即使未声明变量,它也会返回.