var name = "someName";
if(name !=null) {
// do something
}
- 我目前正在使用http://underscorejs.org/#isNull,如何使用
underscore.js
实现相同的功能? - 在这样的函数中使用它是否会略微提高性能?
var name = "someName";
if(name !=null) {
// do something
}
underscore.js
实现相同的功能?if(!_.isNull(name)) {}
在纯JavaScript中,你应该使用
if(name !== null) {}
应避免使用宽松不等运算符!=
,因为它会进行类型转换,undefined != null
将返回false
。
使用普通的JavaScript略微更快,因为它不必调用一个函数,但这几乎是察觉不到的,也不应该是一个考虑因素。
就可读性而言,我没有明确的偏好,但对于如此简单的检查来说,调用库函数似乎有点过度且啰嗦。
var name = "someName";
if(!(_.isNull(name ))) {
// do something
}
isNull
的写法如下。_.isNull = function(obj) {
return obj === null;
};
所以,您的代码中使用==
和underscore.js中使用===
的区别在于这一点。关于这种差异的更多细节,请参见此问题。
JavaScript比较中应该使用哪个等号运算符(== vs ===)?
顺便说一句,在这种简单的情况下,我建议编写自己的条件,而不是使用任何库。
var name = "someName";
if(name !== null)) {
// do something
}
if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data
}else {//Not Valid}
你的原始代码有缺陷,因为如果name
是空字符串、false
、数字0
或任何其他假值,则在测试中它将被视为null
。
作为一般规则,调用任何函数都是应该尽可能避免的开销。在这种情况下,仅为了测试一个值是否为空而调用函数,当你可以非常容易地编写if( name === null)
时,我认为这很愚蠢...
"0" == false
这个真是让我困扰了很久。这太糟糕了... - wchargin
=== null
的极端简单性。是的,我刚刚给查克·诺里斯投了反对票。 - Niet the Dark Absol