如何正确理解这种语法:
if (tipoTropaPrioritaria[m] || troopsCount[m] || availableTroops[m]) == ("null" || "undefined") {
...
}
(检查前3个变量中的任何一个是否为null或未定义)
答案 0 :(得分:3)
您可以定义一个小辅助函数来执行检查,然后在所有值上使用它:
function notset(v) {
return (v === undefined) || (v === null);
}
if (notset(tipoTropaPrioritaria[m]) || notset(troopsCount[m]) ||
notset(availableTroops[m])) {
...
}
答案 1 :(得分:2)
使用:
if (tipoTropaPrioritaria[m] == null || troopsCount[m] == null || availableTroops[m] == null ||
tipoTropaPrioritaria[m] == undefined || troopsCount[m] == undefined || availableTroops[m] == undefined) {
// ...
}
编辑:在这种情况下,最好使用===
(三等)运算符。
if (tipoTropaPrioritaria[m] === null || troopsCount[m] === null || availableTroops[m] === null ||
tipoTropaPrioritaria[m] === undefined || troopsCount[m] === undefined || availableTroops[m] === undefined) {
// ...
}
或:
if (null in {tipoTropaPrioritaria[m]:0, troopsCount[m]:0, availableTroops[m]:0} || undefined in {tipoTropaPrioritaria[m]:0, troopsCount[m]:0, availableTroops[m]:0}) {
答案 2 :(得分:1)
这是做你想做的最好的方式
if (!tipoTropaPrioritaria[m] || !troopsCount[m] || !availableTroops[m]) {
...
}
!
运算符将结果强制转换为可以测试的布尔值(null和undefined变为false),并且前面的!
false
被否定为{{1 }}
另一种方法是针对true
和null
测试每个表达式。
undefined
所以你知道,测试undefined的正确方法是
function isNullOrUndefined(val) {
return (val === null || typeof val == "undefined");
}
if (isNullOrUndefined(a) || isNullOrUndefined(b) ... ) {
答案 3 :(得分:1)
要做的是:
if ((tipoTropaPrioritaria[m] == null || tipoTropaPrioritaria[m] == undefined)
|| (troopsCount[m] == null || troopsCount[m] == undefined) ||
(availableTroops[m] == null || availableTroops[m] == undefined)) {
...
}
答案 4 :(得分:1)
如果你这么做很多,你可以创建一个辅助函数
function isNullOrUndef(args) {
for (var i =0; i < arguments.length; i++) {
if (arguments[i] == null || typeof arguments[i] === "undefined") {
return true
}
}
return false
}
if (isNullOrUndef(tipoTropaPrioritaria[m], troopsCount[m], availableTroops[m]))
...
答案 5 :(得分:0)
if (tipoTropaPrioritaria[m] && troopsCount[m] && availableTroops[m]) { }
else { /* At least ones is undefined/null OR FALSE */ }
if (tipoTropaPrioritaria[m] == null || troopsCount[m] == null || availableTroops[m] == null)
{ /* One is null. */ }
答案 6 :(得分:0)
如果你想检查它们是否为空或未定义,你可以写
if (!tipoTropaPrioritaria[m] || !troopsCount[m] || !availableTroops[m])
null 和undefined
都是 falsely 值。如果这些都不是 null 或 undefined ,那么这只会是真的。
请考虑还有其他错误的值: