【问题标题】:properly checking null values in javascript正确检查 javascript 中的空值
【发布时间】:2015-05-21 20:40:06
【问题描述】:

所以我这几天一直在研究这个问题,但似乎找不到真正有效的答案。我正在处理一个 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"

【问题讨论】:

  • 我的意思是,null 总是错误的,但您可以改为检查它是否为 null if (update.due === null),这样您就不会得到误报(或否定,但你怎么看)。

标签: javascript json node.js trello


【解决方案1】:

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


在 Javascript 中,您可以使用 === 检查特定值,或者您可以使用 == 允许类型转换,您可以检查是否有真值或假值。

当你这样做时:

if (!update.due)

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

如果您要做的只是查看update.due 中是否有一些非零值数字或布尔值,那么if (!update.due) 是紧凑的并且可以很好地完成工作。

另一方面,如果您真的想明确地知道它是否包含null,那么您必须专门针对null 进行测试,如下所示:

if (update.due !== null)

由于if (!update.due) 更短,因此非常常用来检查update.due 中是否有定义的值。您必须小心 0 对您来说不是一个有效值,因为 null0 在此特定测试中会给出相同的结果。但只要您要测试的值不是空字符串或零,if (!update.due) 就可以正常工作。

【讨论】:

  • 很好的解释,我只是不确定我是否真的可以检查 null 本身。谢谢!
猜你喜欢
  • 2016-07-02
  • 2013-05-16
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多