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

标签 javascript undefined

我正在看这个问题: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/

相关文章:

javascript - 如何从javascript中的函数内部访问对象属性,可能吗?

javascript - 根据创建时间从对象数组中删除重复项

javascript - 使用 Javascript/jQuery 将第 n 个制表符替换为字符串

kendo-ui - 为什么在 jsfiddle 中 window.kendo 未定义

c# - 如何在 C# 中解析未知的日期时间格式

javascript - 如何测试 document.write() 是否成功

javascript - AJAX console.log 返回未定义

javascript - 对所有包含 "undefined” 的不存在页面的请求

python - 使用python运行nlp脚本时如何解决“"name ' Score' is not Defined”的问题?

javascript - 使用 Cytoscape.js 添加边缘标签