我怎样才能找到违约的条件?

时间:2012-03-20 14:48:54

标签: javascript conditional

在javascript中我有一个if语句,我想记录默认为true的第一个条件。例如,如果a === true,那么我想要console.log a(更新:例如,“a”或“b”或“c”,实际字符)。

有什么想法吗?

if(a || b || c){ console.log(this) }

谢谢你们!

5 个答案:

答案 0 :(得分:4)

当然,最好的办法是use a debugger并在分支到a时检查bc和/或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);
}

Live example | Live source


原版更长版本:

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())