为什么在检查之前用“var undefined;”声明未定义?

时间:2013-09-05 23:56:08

标签: javascript undefined

我正在看这个问题:Check if an object is defined: best practice并注意到我以前没见过的答案:

function isDefined(x) {
    var undefined;
    return x !== undefined;
}

宣布undefined并保留未定义的原因是什么?换句话说,将undefined定义为undefined

1 个答案:

答案 0 :(得分:11)

有些人确信直接使用undefined是不好的,因为有人可以window.undefined = "whatever"。这是因为,在ES5及之前(我们将看到后来的内容),undefined 是保留字,可以用作标识符。

本地var可以防止这种糟糕的全局变量中毒 - 它引入了一个名为“undefined”的局部变量(它将遮蔽可能存在的任何坏变量),其值默认为实际的未定义值,因为没有分配

如果我如此关注(我不是),我会做x !== (void 0)。与undefined不同,the void operator一直是保留字,因此不受上述中毒的影响。