仅检查空值的 Javascript 最佳实践

dja*_*min 3 javascript null

我想检查 JavaScript 中的空值。

例如, test() 是可以返回 null 的函数。所以如果我想有效地测试空检查,我的方法应该是什么。

var a = test();
Run Code Online (Sandbox Code Playgroud)

其次是

if (a) {}
Run Code Online (Sandbox Code Playgroud)

或者

if (a !== null) {}
Run Code Online (Sandbox Code Playgroud)

? 因为if (a)将检查 null、undefined、false、0、NaN,当我们知道我们只能得到 null 值时,这可能不是最好的方法。

Fiz*_*han 5

仅检查 null

if (value !== null) {
}
Run Code Online (Sandbox Code Playgroud)

如果您甚至想检查“未定义”

if (typeof value !== 'undefined' && value !== null)
Run Code Online (Sandbox Code Playgroud)

我建议您检查undefinednull价值。

function test() {
  var a;
  return a;  // returns undefined
}

function test() {
  var a = null;
  return a;  // returns null   
}
Run Code Online (Sandbox Code Playgroud)

所以有可能 value 可以undefinedor null。所以最好两者都检查一下。


Tib*_*bos 5

正如您所指出的,不同的方法检查不同的东西,您需要根据自己的需要选择最合适的方法。它们之间的性能差异很小,当然不值得进行微观优化。


if (a)

确保真实值。如果返回值0''实际上有效,这可能不是您想要的。


if (a !== null)

确保过滤空返回值。


if (a !== null && a !== undefined)

确保过滤空值或未定义的值。


if (a != null)

与上一个相同,过滤掉空值和未定义值。它更短,但某些编码风格强制执行严格的相等性检查,粗心的维护者可能会通过“修复”它无意中改变逻辑。


var a = test() || default;

不完全是检查,但非常有用,因为它不会分支您的逻辑。如果 test() 调用的结果为假,则可以应用某个默认值时,您可能希望使用它来避免 if alltogether 并拥有清晰的代码路径。