我想检查JavaScript中的空值。
例如,test()是可以返回null的函数。所以如果我想有效地测试空检查应该是我的方法。
var a = test();
接着是
if (a) {}
OR
if (a !== null) {}
? 因为 if(a)将检查null,undefined,false,0,NaN,当我们知道我们只能获得空值时,这可能不是最好的方法。
答案 0 :(得分:4)
正如您所指出的,不同的方法会检查不同的东西,您需要根据需要选择最合适的方法。它们之间的性能差异微不足道,当然不值得微观优化。
<强> if (a)
强>
确保真正的价值。如果0
或''
的返回值实际有效,则可能不是您想要的。
<强> if (a !=== null)
强>
确保过滤返回的null值。
<强> if (a !== null && a !== undefined)
强>
确保过滤掉null或未定义的值。
<强> if (a != null)
强>
与前一个相同,过滤掉null和undefined值。它更短,但某些编码风格强制执行严格的等式检查,粗心的维护者可以通过修复&#34;无意中改变逻辑。它
<强> var a = test() || default;
强>
不完全是一个检查,但非常有用,因为它没有分支你的逻辑。如果test()调用的结果是假的,可以应用某个默认值,您可能希望使用它来避免if alltogether并且具有清晰的代码路径。
答案 1 :(得分:3)
仅检查空值
if (value !== null) {
}
如果你想检查'undefined'
if (typeof value !== 'undefined' && value !== null)
我建议您检查undefined
和null
值。
function test() {
var a;
return a; // returns undefined
}
function test() {
var a = null;
return a; // returns null
}
因此有可能值undefined
或null
。所以最好检查两者。