以有效的方式检查多个变量是否为空,未定义或为空

时间:2015-09-17 08:14:59

标签: javascript jquery

目前我有这样的if条件:

if(
  (variable != null && variable != '' && !variable) &&
  (variable2 != null && variable2 != '' && !variable2) &&
  (variable3 != null && variable3 != '' && !variable3)
  //etc..
)

我需要用它来检查多个变量是否有价值(没有遗漏),但我觉得这是一个混乱的解决方案,并想问是否有更有效的方法?也许还有额外的检查?

6 个答案:

答案 0 :(得分:27)

由于falsy会忽略任何if(variable && variable2 && variable3) 值,这对您有用

false.
0 (zero)
"" (empty string)
null.
undefined.
NaN (a special Number value meaning Not-a-Number!)

JS中的以下值总是假的:

if((variable || variable === 0) && (variable2 || variable2 === 0) && (variable3 || variable3 === 0))

更新: -

如果你想要执行if if,即使值为0,你也必须添加一个额外的检查,说0或其他值。

answer1=scan.nextBoolean();

答案 1 :(得分:3)

我假设您正在检查真值?如果是这样,你可以这样做:

View

答案 2 :(得分:2)

如果您的变量包含一些 truthy 的值,如字符串,并且在您的条件中被认为是正数,那么您只需使用Array.prototype.every()进行检查...

if (![var1, var2, var3].every(Boolean)) {
     throw new exc;
}

将检查以确保每个变量都具有真值。

答案 3 :(得分:1)

如果IE支持对您无关紧要,您可以执行以下操作

var a = 5;
var b = null;
var c = undefined;
   
 if ( [a,b,c].includes(undefined) || [a,b,c].includes(null) ) {          
   console.log("You f*d up")
 }

有关更多信息,请查看MDN reference

或者你可以使用lodash

var a = 5;
var b = null;
var c = undefined;

if ( _.some([a,b,c], el => _.isNil(el)) ) {
  console.log("You f*d up")
}
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>

答案 4 :(得分:0)

请参阅JavaScript: What is the difference between if (!x) and if (x == null)?

对于所有假值,

!变量都是真的,所以你只需要

if(variable1 && variable2 && variable3 && ...)

答案 5 :(得分:0)

长手 -

 if (var1 !== null || var1 !== undefined || var1 !== '') {
   let var2 = var1;
 }

简短的手 -

 const var2 = var1  || '';