[英]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
, ""
, 0
, false
, NaN
, undefined
。
如果您要尝试做的只是查看update.due
是否包含一些非零值数字或布尔值,则if (!update.due)
是紧凑的并且工作正常。
另一方面,如果您确实想确切地知道它是否包含null
,则必须像下面这样专门测试null
:
if (update.due !== null)
由于if (!update.due)
较短,因此非常常用于仅检查update.due
是否存在某些已定义的值。 您一定要注意, 0
对您而言不是有效值,因为对于此特定测试, null
和0
会给出相同的结果。 但是只要您要测试的值不是空字符串或零,那么if (!update.due)
就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.