Javascript 使用下划线.js进行空检查 我现在正在使用,我该怎么办 使用下划线.js也一样 在这类产品的性能方面是否有轻微的改进 功能

Javascript 使用下划线.js进行空检查 我现在正在使用,我该怎么办 使用下划线.js也一样 在这类产品的性能方面是否有轻微的改进 功能,javascript,underscore.js,Javascript,Underscore.js,您的原始代码是有缺陷的,因为如果name是空字符串、false、数字0或任何其他错误值,那么就您的测试而言,它将被视为null 一般来说,调用任何函数都是一种开销,如果可能的话,应该避免这种开销。在这种情况下,调用函数只是为了测试一个值是否为null,而您可以很容易地编写if(name==null),这是很愚蠢的,我想。在underline.js中,您必须编写此函数才能实现该功能 var name = "someName"; if(name !=null) { // do somethin

您的原始代码是有缺陷的,因为如果
name
是空字符串、
false
、数字
0
或任何其他错误值,那么就您的测试而言,它将被视为
null


一般来说,调用任何函数都是一种开销,如果可能的话,应该避免这种开销。在这种情况下,调用函数只是为了测试一个值是否为null,而您可以很容易地编写
if(name==null)
,这是很愚蠢的,我想。

在underline.js中,您必须编写此函数才能实现该功能

var name = "someName";
if(name !=null) {
   // do something
}
在underline.js中,函数
isNull
是这样编写的

var name = "someName";
if(!(_.isNull(name ))) {
   // do something
}
因此,区别在于代码中使用了
==
,而下划线.js中使用了
==

另外,我建议写下你自己的条件,而不是在这样简单的地方使用任何库

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

在下划线中,可以使用

var name = "someName";
if(name !== null)) {
   // do something
}
在纯Javascript中,您应该使用

if(!_.isNull(name)) {}
您应该避免使用松散的不等式运算符
=因为它执行类型强制和
未定义!=null
将返回
false

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


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

-1仅提及编写
==null
的极端简单性。是的,我刚刚否决了Chuck Norris。你一生中最大的错误是:对于将要回答这个问题的人,DJust为“否”,“false”和“0”将不匹配null,只有“未定义”和“null”在使用==null时匹配null。另一方面,当检查==false(或!something)时,它还将匹配null、undefined、0、“、”0”和“false”@sui谢谢
“0”==false
总是能让我明白。好无聊…请详细说明您的答案。嗨,Shawn,如果我们需要对json数据/对象执行一些操作,那么我们可以简单地使用下划线库并首先执行2个检查isUndefined(数据)必须为false,并且是空数据也是有效的,所以我们需要设置条件来验证是否(!(u.isUndefined(数据))| | isEmpty(数据)){//有效数据json Data//TODO WORK}其他{//无效json结果}
if(name !== null) {}
if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data 
}else {//Not Valid}