在JavaScript中正确检查空值
所以我一直在研究这个问题几天,似乎无法找到一个实际工作的答案。我正在处理一个api(trello是特定的),当提供返回的json对象时,在没有值的属性中放置一个NULL值。我从api获取数据后解析数据,并需要一种方法来跳过空值或删除它们。例如,下面是具有空值的对象的一部分:在JavaScript中正确检查空值
{ 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中,您可以检查一个特定的值与===
也可以允许类型转换与你==
可以检查是否有任何truthy或falsey值。
当你这样做:
if (!update.due)
要检查,看是否update.due
是任何falsey值。 Falsey值包括null
,""
,0
,false
,NaN
,undefined
。
如果你正在试图做的是看看update.due
是否有一个非零值的数值或布尔值,那么if (!update.due)
是紧凑的,并做得很好。
在其他手,如果你真的想unequivocably知道它是否包含null
或没有,那么你必须专门为null
测试是这样的:
if (update.due !== null)
由于if (!update.due)
较短,这是非常通常用于检查update.due
中是否有一些定义的值。您必须小心,0
对您来说不是一个有效的值,因为null
和0
会给出与此特定测试相同的结果。但只要你测试的值不是空字符串或零,那么if (!update.due)
工作得很好。
很好的解释,我只是不确定我是否可以实际检查null本身。谢谢! – 2015-03-18 21:33:56
我的意思是,空将永远是虚假的,但你可以改为检查它是否为空if(update.due === null)'这样你就不会得到误报(或否定,但是你看看它)。 – 2015-03-18 21:12:20