目前我有这样的if条件:
if(
(variable != null && variable != '' && !variable) &&
(variable2 != null && variable2 != '' && !variable2) &&
(variable3 != null && variable3 != '' && !variable3)
//etc..
)
我需要用它来检查多个变量是否有价值(没有遗漏),但我觉得这是一个混乱的解决方案,并想问是否有更有效的方法?也许还有额外的检查?
答案 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 || '';