在 JavaScript 代码中,我想替换以下 if 语句的双等号结构:
if( name == null ) {
//do stuff
}
jshint 规则“eqeqeq”的双等号失败,建议将双等号替换为三等号。暂时,让我们想象一下上面的代码从== null
变成=== null
这样:
if( name === null ) {
//do stuff
}
这适用于显式定义的具有 value 的变量null
,但不幸的是对于像这样的任何未设置的变量都会失败。
var a = null; // works correctly
var b; // will fail in comparison
以前,当三等式规则对我很重要时,我会执行以下操作
if( name === null ||| typeof(name) === 'undefined' )
但我觉得这非常臃肿。
我现在能想到的最好的替代方法是使用 if 语句的性质,让它评估为一个假表达式,就像这里我否定表达式并简单地删除== null
部分:
if( !name ) {
//do stuff
}
对我来说,这更简单,易于阅读,并且完全避免了显式的等于比较。但是,我不确定是否有任何边缘原因我在这里错过了?
所以问题是,我通常可以== null
用否定表达式替换 if 语句吗?如果是这样,它不起作用的陷阱和例外是什么?它适用于一般数组项、字符串、对象属性吗?
我选择解决方案的标准是
- 干净的代码
- 易读易懂
- 验证 jshint 规则
- 适用于现代浏览器(截至 2015 年 1 月撰写)
我知道讨论相等运算符==
vs===
差异的其他稍微相关的问题,但这仅仅是为了讨论与 if 语句中的 null-ish 相比的评估。