在javascript中我有一个if语句,我想记录默认为true的第一个条件。例如,如果a === true
,那么我想要console.log
a(更新:例如,“a”或“b”或“c”,实际字符)。
有什么想法吗?
if(a || b || c){ console.log(this) }
谢谢你们!
答案 0 :(得分:4)
当然,最好的办法是use a debugger并在分支到a
时检查b
,c
和/或if
声明的正文。 : - )
在代码中执行,如果您真的想看“a”,“b”或“c” 更新,那么我没有想法?当然有一条捷径:
if(a || b || c){
console.log(a ? "a" : b ? "b" : "c");
}
或者如果你想看到这个值:
if(a || b || c){
console.log(a ? "a: " + a : b ? "b: " + b : "c: " + c);
}
原版更长版本:
if(a || b || c){
if (a) {
console.log("a: " + a);
}
else if (b) {
console.log("b: " + b);
}
else {
console.log("c: " + c);
}
}
或者(这是非常棘手的,很多更长,所以不推荐):
if(a || b || c){
switch (false) {
case !a:
console.log("a: " + a);
break;
case !b:
console.log("b: " + b);
break;
default:
console.log("c: " + c);
}
}
...这是有效的,因为switch
语句case
在运行时被评估,并且按顺序。
答案 1 :(得分:2)
突然进入ifs链。
if(a){
// a is true, b and c unknown
} else if(b){
// a is false, b is true, c is unknown
} else if (c){
// a and b both false, c is true
} else {
// a b and c all false
}
如果您愿意,您当然可以为此添加更多条件。
答案 2 :(得分:1)
if (a) {
console.log(a);
console.log(this);
} else if (b) {
etc...
} else if (c) {
etc...
} else {
... profit?
}
另一种选择,如果你不想写出长if / then / else链,就是把想要检查的值填入数组,循环遍历数组,然后在你点击时记录/中断第一个真正的价值。
答案 3 :(得分:0)
保存第一个(如果有)真实变量,并使用它:
var x = a || b || c ;
if(x){ console.log(x) }
编辑:为了消除困惑:
var a, b, c;
a = "";
b = null;
c = "12";
var x = a || b || c;
if (x)
alert(x); // Alerts "12" (and not "true").
Fiddle表示您将获得x的值,而不是x是否为真。
答案 4 :(得分:0)
另一种方式来自underscore.js
console.log(_.chain([a,b,c]).compact().first().value())