我想弄清楚如何简化可能的长if else语句。如何缩短长if else语句
有8种可能性可以选择,每个选项1-8我想显示一条消息。
例如,这是什么工作,但我知道可以更好writtern:
if(this.cv == '1'){
console.log('Greater Then 1');
} else
if(this.cv == '2'){
console.log('Greater Than 2');
}
等...
寻找的东西多一点活力。
我想弄清楚如何简化可能的长if else语句。如何缩短长if else语句
有8种可能性可以选择,每个选项1-8我想显示一条消息。
例如,这是什么工作,但我知道可以更好writtern:
if(this.cv == '1'){
console.log('Greater Then 1');
} else
if(this.cv == '2'){
console.log('Greater Than 2');
}
等...
寻找的东西多一点活力。
您可以使用switch语句,检查此链接for more details
Genaral开关的语法:
switch (expression) {
case label1:
statements1
[break;]
case label2:
statements2
[break;]
...
case labelN:
statementsN
[break;]
default:
statements_def
[break;]
}
你的情况:
switch(this.cv) {
case '1':
console.log("Greater than 1");
break;
case '2':
console.log("Greater than 2");
break;
}
这不会比一系列if语句短得多。 – j08691
@ j08691虽然书面的代码可能不是,但执行的操作当然是;) –
但是我必须低估这个答案,因为你已经过分复杂了。 '[break;]'...虽然我理解它的意思是“可选的”break;'“,其他人可能不会。 –
使用switch语句:
switch(this.cv)
{
case '1':
console.log('Greater Than 1');
break;
case '2':
console.log('Greater Than 2');
break;
default:
//executed if no matches are found
}
或者根据adeneo的回答,一张地图也可以很好地工作,因为这基本上是一个switch语句的实现。两种压缩几个if语句都是很好的选择。
这就是switch
声明的原因。
switch(this.cv) {
case '1':
console.log("Greater than 1");
break;
case '2':
console.log("Greater than 2");
break;
}
你甚至可以添加一个“包罗万象”默认动作:
default:
console.log("I don't know what to do with "+this.cv);
switch(n)
{
case '1':
execute code block 1
break;
case '2':
execute code block 2
break;
default:
code to be executed if n is different from case 1 and 2
}
如果这是你的消息的确切格式(适用于所有情况下),那么你可以简单的写:
console.log('Greater Than ' + this.cv);
不过,如果你需要更多的灵活性,每一种情况下,那么你可以使用一个switch
声明为其他答案有人建议。
有时取决于我有很多功能添加到各种变量..
在这种情况下,我更喜欢使用类似的东西。 我用答案创建一个对象。然后我检查答案是否存在并执行。 我更喜欢在开关
var a={'2':'greater than 2','1':'greater than 1'}
console.log(a[this.cv]?a[this.cv]:'')
另一种方式来写,这是
var a={'2':'greater than 2','1':'greater than 1'}
!a[this.cv]||(console.log(a[this.cv]));
,或者如果你只是做一个简短检查使用JavaScript的简写。
console.log('Greater then '+(a=this.cv,a==1)?1:(a==2)?2:'whatever');
或
console.log('Greater then '+(this.cv==1?1:2));
,并在你的情况下,
console.log('Greater than '+this.cv);
应该够了。
这个问题似乎是无关紧要的,因为它是关于代码审查 - ** http://codereview.stackexchange.com/.** – lifetimes
如果您只需要一个一个查找,不需要切换,这比一个LUT慢:console.log({1:'gt one',2:'gt two'} [this.cv]) – dandavis