如果 if-else 內的處理邏輯很簡單具有共同性,例如只是宣告或回傳某值,可以考慮使用 Ternary Operator(三元運算子)寫成,不用長長一串之外更為直觀,這是自己常寫 if else 被制約而忘掉的寫法:P。

例如:

1
2
3
4
var grade = function(score){
if( score < 60 ){ return 'failed' }
else{ return 'passed' }
}

用 Ternary Operator 寫成:

1
2
3
var grade = function(score){
return score < 60 ? 'failed' : 'passed';
};

一行解決,如果支援 ES6 的話搭配 Arrow function 使用,更乾淨俐落。

1
const grade = (score) => score < 60 ? 'failed' : 'passed'; // available with ES6

可以多組判斷串接,相當於 if 之後的 else if:

1
2
const rank = (score) => score>=95 ? 'S' : score>=80 ? 'A' : 'B';
console.log(rank(95),rank(85),rank(70)); //"S" "A" "B"

直接寫在變數宣告中,應用上能限制一些意外的計算結果如 NaNInfinity

1
2
3
4
5
6
7
8
function hitRate( hit, shot ){
//var rate = hit / shot; /* 當shot=0, hit=0時會得到NaN */
var rate = shot == 0 ? 0 : hit / shot; //限制shot為0時讓rate直接代0
if( rate > 0.4){
console.log('MVP');
}
else if ...
}