我正在尝试清理一些代码(修复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) { ... }

但是我实际上认为此警告的真正含义是,您不应在代码的一个分支中同时检查nullundefined,因为它们是不同的值。

但是,如果对此感到安全,则可以使用eqnull选项在JSHint中关闭这些特定检查。然后...
if (x == null) { ... }

...将同时检查nullundefined,但不会触发警告。但是请注意,此选项未“覆盖” == undefined比较。

附带说明,下划线的isUndefined方法是一段有趣的代码:
_.isUndefined = function(obj) {
  return obj === void 0;
};

它本质上与简单的obj === undefined相同,但涵盖了一种特殊情况:当某人认为覆盖脚本中undefined的值是一个好主意时。由于void构造始终返回“真正的undefined”,因此即使在这种情况下,此功能也可以正常工作。

关于javascript - x == undefined的正确替代是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13806223/

10-09 06:38
查看更多