我想弄清楚如何簡化可能的長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