尽管JavaScript的null
和undefined
之间存在语义差异,但很多时候它们可以被视为相同。检查值是null还是未定义的最佳方法是什么?
现在我正在做以下事情:
if (typeof value === "undefined" || value === null) {
// do something
}
这非常详细。当然,我可以为此创建一个函数并在任何地方导入,但我希望有更好的方法来实现这一点。
另外,我知道
if (value == null) {
}
将在90%的时间内完成工作,除非值为零...或者错误......或者一些可能导致模糊错误的隐含事物。 < / p>
答案 0 :(得分:16)
另外,我知道
if (value == null) { }
将在90%的时间内完成工作,除非值为零......或者错误......或者一些可能导致模糊错误的隐含事物。
不,它可以100%完成工作。 == null
null
和undefined.
0 == null
的唯一值为false。 "" == undefined
是假的。 false == null
是假的。等等。你将== null
与虚假混为一谈,这是一个非常不同的事情。
但是,不要说,编写希望每个人都知道的代码是一个好主意。您对已使用的代码有一个非常好的,清晰的检查。无论您选择撰写value == null
还是您当前正在使用的明确版本(或if (value === undefined || value === null)
)都是风格和内部惯例。但value == null
确实按照您的要求行事:检查value
是null
还是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
也具有相似的功能。
我发现这些功能对于其他人了解所测试的内容很有用。