[英]javascript - IF ELSE operators
學習基礎知識並進行了此練習:
"編寫一個函數 addWithSurcharge 將兩個金額與 surcharge 相加。對於每個小於或等於 10 的金額,附加費為 1。對於每個大於 10 的金額,附加費為 2。調用 addWithSurcharge(5, 15) 應返回 23 .”
我已經把:
function addWithSurcharge(num1, num2) {
if (num1 <= 10) {
num1 += 1;
} else {
num1 += 2;
}
if (num2 <= 10) {
num2 += 1;
} else {
num2 += 2;
}
return num1 + num2;
}
哪個有效,但想學習更好的語法。 可以像
if (num1, num2 <= 10) {...
工作? 我意識到不能做 || 運算符,因為它可能會影響錯誤的數字。
將數字放入數組中,然后遍歷數組,這樣您就不必同時重復num1
和num2
:
function addWithSurcharge(...nums) { return nums.reduce((a, num) => { if (num <= 10) { num += 1; } else { num += 2; } return a + num; }, 0); } console.log(addWithSurcharge(5, 15));
沒有.reduce
,上面的等價於:
function addWithSurcharge(...nums) { nums.forEach((num, i) => { if (num <= 10) { nums[i] += 1; } else { nums[i] += 2; } }); return nums[0] + nums[1]; } console.log(addWithSurcharge(5, 15));
您也可以使用條件運算符使if
/ else
部分更加簡潔,而無需費心重新分配:
const addWithSurcharge = (...nums) => ( nums.reduce( (a, num) => a + num + (num <= 10 ? 1 : 2), 0 ) ); console.log(addWithSurcharge(5, 15));
你也可以這樣做:
function addWithSurcharge(num1, num2) {
return num1 + num2 + num1<=10?1:2 + num2<=10?1:2;
}
num1<=10?1:2
基本上意味着if(num1<=10){1} else{2}
效果很好!
最基本的改進是一個可以調用兩次的輔助函數:
function withSurcharge(num) {
if (num <= 10) return num + 1;
else return num + 2;
}
function addWithSurcharge(num1, num2) {
return withSurcharge(num1) + withSurcharge(num2);
}
您可以進一步縮短if
/ else
語句以使用條件表達式,但這樣做並沒有太大好處:
return num + (num <= 10 ? 1 : 2);
一種方法是使用三元運算符
function addWithSurcharge(num1,num2) { num1 += num1 <= 10 ? 1 : 2; num2 += num2 <= 10 ? 1 : 2; return num1 + num2; } console.log(addWithSurcharge(10,5));
如果您使用 ? 分配值時,它將評估 ? 左側的任何內容。 並且要么返回 : 的左側,如果為真,要么返回右側,如果為假。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.