我正在尝试清理一些代码(修复jshint警告)。
什么是最好的替代品
if (x == undefined) {...}
?
我正在使用underscore.js,是以下等效项:
if (x === null || _.isUndefined(x)) {...}
还是我错过了一些边缘案例?
什么等于(
==
)与未定义? (假设没有人做var undefined = 'asdf'
或类似的恶作剧)。 最佳答案
使用x == undefined
,您实际上检查了x
的两个值-undefined
本身和null
。但是请注意,缺少声明的x
变量将在此处触发错误;为了防止这种情况,请使用...
if (typeof x === 'undefined' || x === null) { ... }
但是我实际上认为此警告的真正含义是,您不应在代码的一个分支中同时检查
null
和undefined
,因为它们是不同的值。但是,如果对此感到安全,则可以使用
eqnull
选项在JSHint中关闭这些特定检查。然后...if (x == null) { ... }
...将同时检查
null
和undefined
,但不会触发警告。但是请注意,此选项未“覆盖” == undefined
比较。附带说明,下划线的
isUndefined
方法是一段有趣的代码:_.isUndefined = function(obj) {
return obj === void 0;
};
它本质上与简单的
obj === undefined
相同,但涵盖了一种特殊情况:当某人认为覆盖脚本中undefined
的值是一个好主意时。由于void
构造始终返回“真正的undefined
”,因此即使在这种情况下,此功能也可以正常工作。关于javascript - x == undefined的正确替代是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13806223/