Javascript 如何找到默认为true的条件?
在javascript中,我有一个if语句,我想记录默认为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...
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类型