繁体   English   中英

正确检查JavaScript中的空值

[英]properly checking null values in javascript

因此,我已经研究了几天这个问题,似乎找不到真正有效的答案。 我正在处理一个api(具体来说是trello),当提供向后的json对象时,会将NULL值放入没有值的属性中。 从api获取数据后,我正在解析数据,需要一种跳过空值或删除它们的方法。 例如,这是具有空值的对象的一部分:

{ name: 'blah',
  due: null,
  cards: [ [ [Object], [Object], [Object] ],
 [ [Object] ],
 [ [Object], [Object], [Object] ],
 null,
 [ [Object], [Object] ],
 [ [Object], [Object], [Object], [Object] ],
 [ [Object], [Object] ],
 [ [Object], [Object], [Object] ] ] }

due属性用作替代其他地方的日期时间戳记。 现在,我正在使用似乎有效的方法:

if (!update.due) {
    update.lastUpdated = update.history[0].date;
} else {
    update.lastUpdated = update.due;
}

这是检查空值的唯一正确方法吗? 这是我发现始终如一地工作的唯一方法。 另外,当从对象中删除值时,有一种方法可以检查,这样就可以完全删除属性了:

"if Obj[attr] === null"

是否可以使用快捷方式if (!update.due)而不是if (update.due !== null)取决于update.due中可能的值范围以及您希望测试的结果如何适用于该范围的值。


在Javascript中,您可以使用===检查特定的值,或者可以通过==进行类型转换,以检查是否为真值或假值。

当您这样做时:

if (!update.due)

您正在检查update.due是否为任何falsey值。 假值包括null""0falseNaNundefined

如果您要尝试做的只是查看update.due是否包含一些非零值数字或布尔值,则if (!update.due)是紧凑的并且工作正常。

另一方面,如果您确实想确切地知道它是否包含null ,则必须像下面这样专门测试null

if (update.due !== null)

由于if (!update.due)较短,因此非常常用于仅检查update.due是否存在某些已定义的值。 您一定要注意, 0对您而言不是有效值,因为对于此特定测试, null0会给出相同的结果。 但是只要您要测试的值不是空字符串或零,那么if (!update.due)就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM