我在看这个问题:检查是否定义了一个对象:最佳实践并注意到一个我以前从未见过的答案:
function isDefined(x) {
var undefined;
return x !== undefined;
}
声明undefined
并使其未定义的原因是什么 - 换句话说,定义undefined
为undefined
?
我在看这个问题:检查是否定义了一个对象:最佳实践并注意到一个我以前从未见过的答案:
function isDefined(x) {
var undefined;
return x !== undefined;
}
声明undefined
并使其未定义的原因是什么 - 换句话说,定义undefined
为undefined
?
有些人相信undefined
直接使用是不好的,因为有人可以做到window.undefined = "whatever"
。这是因为,在 ES5 和之前的版本中(我们稍后会看到),undefined
它不是保留字,可以用作标识符。
localvar
可以防止这种糟糕的全局变量中毒——它引入了一个名为“未定义”的局部变量(它将隐藏可能存在的任何错误变量),因为没有赋值,所以它的值默认为真正的未定义值。
如果我如此担心(我不是),我会这样做x !== (void 0)
。与 不同的是undefined
,运算符一直是保留字,因此不受上述中毒的影响。void