我正在看这个问题:Check if an object is defined: best practice并注意到一个我以前从未见过的答案:
function isDefined(x) {
var undefined;
return x !== undefined;
}
声明undefined
并保留其未定义的原因是什么 - 换句话说,将undefined
定义为undefined
?
最佳答案
有些人确信直接使用 undefined
是不好的,因为有人可以做 window.undefined = "whatever"
。这是因为,在 ES5 及之前的版本中(我们将看到稍后会发生什么),undefined
不是保留字,可以用作标识符。
本地 var
可以防止这种不良的全局变量中毒 - 它引入了一个名为“undefined”的局部变量(它将隐藏任何可能存在的不良变量),该变量的值默认为真正的未定义值,因为没有任务。
如果我这么担心(我不是),我会做x !== (void 0)
。与未定义
不同,the void
operator一直是保留字,因此不会受到上述中毒的影响。
关于javascript - 为什么在检查之前会用 “var undefined;” 声明未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647779/