Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript只检查空值的最佳实践_Javascript_Null - Fatal编程技术网

Javascript只检查空值的最佳实践

Javascript只检查空值的最佳实践,javascript,null,Javascript,Null,我想检查JavaScript中的空值 例如,test()是可以返回null的函数。因此,如果我想有效地测试空检查,我的方法应该是什么 var a = test(); 接 if (a) {} 或 ?? 因为如果(a)将检查null、undefined、false、0、NaN,当我们知道只能得到null值时,这可能不是最好的方法。只检查null if (value !== null) { } 如果您想检查“未定义” if (typeof value !== 'undefined' &&

我想检查JavaScript中的空值

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

var a = test();

if (a) {}

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

只检查null

if (value !== null) {
}
如果您想检查“未定义”

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   
}

因此,值可能是
未定义的
空的
。所以最好同时检查两者。

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


如果(a)

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


如果(a!==null)

确保筛选空返回值


如果(a!==null&&a!==未定义)

确保筛选空值或未定义的值


如果(a!=null)

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


var a=test()|默认值


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

如果我想有效地测试空值检查,这是应用程序中的瓶颈吗?
我想检查空值。
。因此,检查空值:
如果(a!==null){}
?如果不检查与空值是否严格相等,则将检查所有false-y值。因此必须使用'if(a==null){…}'。仅供参考,null与未定义(或0,或false,或“”)不同。是的,我的问题基本上是关于效率,是否使用!==空,更好的方法?或者根本没关系。
function test() {
  var a;
  return a;  // returns undefined
}

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