使用underscore.js进行空检查

时间:2012-05-25 08:27:43

标签: javascript underscore.js

var name = "someName";
if(name !=null) {
   // do something
}
  1. 我现在正在使用http://underscorejs.org/#isNull,我该怎么做 同样使用underscore.js
  2. 是否会在性能方面略有改善 功能。

4 个答案:

答案 0 :(得分:25)

在下划线中,您可以使用

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

并且在普通的Javascript中,您应该使用

if(name !== null) {}

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

使用普通的Javascript稍微快一些,因为它不必调用函数,但它将是难以察觉的,它应该是一个考虑因素。

就可读性而言,我没有强烈的偏好,但是为了这么简单的检查调用库函数似乎有点过分和冗长。

答案 1 :(得分:1)

原始代码存在缺陷,因为如果name为空字符串false,数字为0或任何其他虚假值,则会将null视为if( name === null)就你的考试而言。

作为一般规则,调用ANY函数是一个开销,如果可能应该避免。在这种情况下,调用一个函数来测试一个值是否为null,当你可以很容易地写{{1}}时,只是愚蠢,IMO ......

答案 2 :(得分:1)

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

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

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

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

不同之处在于您的代码中使用了==,而在underscore.js中使用了===。有关这种差异的详细信息,您可以查看此问题。

Which equals operator (== vs ===) should be used in JavaScript comparisons?

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

var name = "someName";
if(name !== null)) {
   // do something
}

答案 3 :(得分:0)

if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data 
}else {//Not Valid}