rip*_*234 2 javascript undefined
我正在尝试清理一些代码(修复jshint警告).
什么是最好的替代品
if (x == undefined) {...}
Run Code Online (Sandbox Code Playgroud)
?
我正在使用underscore.js,是以下等价物:
if (x === null || _.isUndefined(x)) {...}
Run Code Online (Sandbox Code Playgroud)
或者我错过了一些边缘案例?什么是==未定义的等于()?(假设没有人这样做var undefined = 'asdf'或任何邪恶的东西).
随着x == undefined你实际检查的两个值x- undefined本身null.但请注意,缺少声明的x变量会在此触发错误; 要防止这种情况,请使用......
if (typeof x === 'undefined' || x === null) { ... }
Run Code Online (Sandbox Code Playgroud)
但实际上,我认为这个警告的真正含义是,你不应该同时检查null和undefined在一个代码分支,因为它们是不同的值.
然而,如果您对此感到安全,可以使用eqnull选项关闭JSHint中的这些特定检查.然后...
if (x == null) { ... }
Run Code Online (Sandbox Code Playgroud)
...将检查既为null和undefined,但不会触发报警.但请注意,== undefined此选项不会"覆盖"比较.
作为旁注,下划线的isUndefined方法是一段有趣的代码:
_.isUndefined = function(obj) {
return obj === void 0;
};
Run Code Online (Sandbox Code Playgroud)
它基本上与简单相同obj === undefined,但涵盖了一个特例:当有人认为覆盖undefined脚本中的值时,这是一个好主意.由于void构造总是返回"真实undefined",即使在这种情况下,此功能也能正常工作.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |