Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找到默认为true的条件?_Javascript_Conditional - Fatal编程技术网

Javascript 如何找到默认为true的条件?

Javascript 如何找到默认为true的条件?,javascript,conditional,Javascript,Conditional,在javascript中,我有一个if语句,我想记录默认为true的第一个条件。例如,如果a===true,那么我想console.loga(update:例如,“a”或“b”或“c”,实际字符) 有什么想法吗 if(a || b || c){ console.log(this) } 谢谢大家 if (a) { console.log(a); console.log(this); } else if (b) { etc... } else if (c) { etc...

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

有什么想法吗

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

if (a) {
   console.log(a);
   console.log(this);
} else if (b) {
   etc...
} else if (c) {
   etc...
} else {
   ... profit?
}
另一种选择是,如果不想写出一个很长的if/then/else链,则将要检查的值填充到数组中,循环数组,然后在遇到第一个真值时记录/中断

另一种选择是,如果不想写出长的if/then/else链,则将要检查的值填充到数组中,在数组上循环,然后在遇到第一个真值时记录/中断。

保存第一个(如果有)真变量,并使用它:

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").
显示您将获得x的值,而不是x是否为真。

保存第一个(如果有)真变量,并使用它:

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").

为了表明您将得到x的值,而不是x是否为真。

当然,最好的做法是在分支到
if
语句体时检查
a
b
和/或
c
。:-)

如果你真的想看到“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
。)

如果你真的想看到“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);
    }
}
或者(这相当棘手,而且时间更长,因此不推荐):


…之所以有效,是因为
switch
语句
case
s是在运行时按顺序计算的。

只需将其分解为一系列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
}

当然,如果您愿意,您可以添加更多的条件。

只需打开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
}

当然,如果需要,您可以添加更多条件。

另一种方式是通过underline.js

console.log(_.chain([a,b,c]).compact().first().value())

另一种方式是通过underline.js

console.log(_.chain([a,b,c]).compact().first().value())


@格多龙:不,我说如果他真的想看到“a”、“b”或“c”(实际字符,而不是那些名称包含的变量)。你的例子不需要两次检查变量的状态,你不需要使用
如果(a | b | c)
,除了在你的第二个例子中,你假设如果a和b都为假,那么c必须为真。@Coshman:OP正在执行的分支中调试代码。关于第二个例子,请再读一遍:如果a和b是错误的,那么c一定是真实的(因为你刚才抱怨的预先检查)。事实上,我觉得你没能抓住OP的要点,但我觉得不值得投反对票。是的,谢谢t.j.克劳德,我想看“a”或“b”或“c”的真实角色。抱歉搞混了,伙计们,谢谢你们的帮助@T.J.Crowder啊,我知道你来自哪里了。我知道有一个隐藏的“这里有更多代码”,你的答案确实有道理,我收回我的反对票:D@gdoron:不,我是说如果他真的想看到“a”、“b”或“c”(实际字符,而不是那些名称包含的变量)。你的示例不必要地检查变量的状态两次,如果(a | | b | | c)
,则无需使用
,在第二个示例中,假设a和b都为false,则c必须为true。@Coshman:OP正在执行的分支中调试代码。关于第二个例子,请再读一遍:如果a和b是错误的,那么c一定是真实的(因为你刚才抱怨的预先检查)。事实上,我觉得你没能抓住OP的要点,但我觉得不值得投反对票。是的,谢谢t.j.克劳德,我想看“a”或“b”或“c”的真实角色。抱歉搞混了,伙计们,谢谢你们的帮助@T.J.Crowder啊,我知道你来自哪里了。知道有一个隐藏的“这里有更多的代码”你的答案确实有意义,我收回我的否决票:你想记录名称(
a
b
c
)或这些变量的值吗?你想记录名称(
a
b
c
)或者这些变量的值?这没有什么不同,您只需将实际计算结果(如果有)移到
if
之外,并添加一个变量来缓存它result@gdoron我想你搞错了。如果结果是我搞错了,将恢复否决票。。@T.J.Crowder-erm,因为我们处理的是布尔值,“truthy”项的值只能是真的。@gdoron该死,我忘了JS slutty类型。@thecoshman。他只是在后来的一篇评论中写道,T.J.克劳德更新了这个问题。无论如何上下票数不应该成为网站的亮点。如果它能让你感觉更好,你可以进行向下投票。这没什么不同,你只需将实际计算结果(如果有)移到
if
之外,并添加一个变量来缓存它result@gdoron我想你搞错了。如果结果是我搞错了,将恢复否决票。。@T.J.Crowder-erm,因为我们处理的是布尔值,“truthy”项的值只能是真的。@gdoron该死,我忘了JS slutty类型