16
var name = "someName";
if(name !=null) {
   // do something
}
  1. 我现在正在使用http://underscorejs.org/#isNull,我将如何使用underscore.js
  2. 它在此类功能的性能方面是否有任何轻微的改进。
4

4 回答 4

26

在下划线中,您可以使用

if(!_.isNull(name)) {}

在纯 Javascript 中,您应该使用

if(name !== null) {}

您应该避免使用松散的不等式运算符!=,因为它确实类型强制并且undefined != null会返回false

使用纯 Javascript 稍微快一些,因为它不必调用函数,但它是不易察觉的,几乎不应该考虑。

就可读性而言,我对这两种方式都没有强烈的偏好,但调用库函数进行如此简单的检查似乎有点过分和冗长。

于 2012-05-25T08:31:54.447 回答
1

在 underscore.js 中,您必须编写此代码才能实现该功能。

var name = "someName";
if(!(_.isNull(name ))) {
   // do something
}

在 underscore.js 中函数isNull是这样写的

_.isNull = function(obj) {
    return obj === null;
  };

所以区别在于==您的代码和===underscore.js 中使用。有关该区别的更多详细信息,您可以查看此问题。

在 JavaScript 比较中应该使用哪个等号运算符(== vs ===)?

PS我会建议写你自己的条件,而不是在这么简单的地方使用任何库。

var name = "someName";
if(name !== null)) {
   // do something
}
于 2012-05-25T08:31:05.590 回答
0

好吧,您的原始代码有缺陷,因为如果name是空字符串,false数字或任何其他虚假值,那么就您的测试而言0,它将被考虑。null

作为一般规则,调用 ANY 函数是一种开销,应尽可能避免。在这种情况下,调用一个函数只是为了测试一个值是否为空,而你可以很容易地编写if( name === null), 只是愚蠢的,IMO ...

于 2012-05-25T08:30:32.127 回答
0
if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data 
}else {//Not Valid}
于 2016-10-04T17:46:04.313 回答