检查null或undefined

时间:2016-07-28 23:00:23

标签: javascript node.js

尽管JavaScript的nullundefined之间存在语义差异,但很多时候它们可以被视为相同。检查值是null还是未定义的最佳方法是什么?

现在我正在做以下事情:

if (typeof value === "undefined" || value === null) {
    // do something
}

这非常详细。当然,我可以为此创建一个函数并在任何地方导入,但我希望有更好的方法来实现这一点。

另外,我知道

if (value == null) {
}

将在90%的时间内完成工作,除非值为零...或者错误......或者一些可能导致模糊错误的隐含事物。 < / p>

2 个答案:

答案 0 :(得分:16)

  

另外,我知道

if (value == null) {
}
     

将在90%的时间内完成工作,除非值为零......或者错误......或者一些可能导致模糊错误的隐含事物。

不,它可以100%完成工作。 == null nullundefined. 0 == null的唯一值为false。 "" == undefined是假的。 false == null是假的。等等。你将== null与虚假混为一谈,这是一个非常不同的事情。

但是,不要说,编写希望每个人都知道的代码是一个好主意。您对已使用的代码有一个非常好的,清晰的检查。无论您选择撰写value == null还是您当前正在使用的明确版本(或if (value === undefined || value === null))都是风格和内部惯例。但value == null确实按照您的要求行事:检查valuenull还是undefined

==的详细信息在这里:Abstract Equality Comparison

答案 1 :(得分:0)

下划线js为此_.isUndefined()

提供了一个功能

来自https://underscorejs.org/#isUndefined

  

isUndefined _.isUndefined(value)
  如果值未定义,则返回true。

     

示例:
  _.isUndefined(window.missingVariable);
  =>是

lodash具有类似的功能。参见https://lodash.com/docs/4.17.11#isUndefined

两者对于isNull也具有相似的功能。

我发现这些功能对于其他人了解所测试的内容很有用。