簡體   English   中英

javascript - IF ELSE 運算符

[英]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) {...

工作? 我意識到不能做 || 運算符,因為它可能會影響錯誤的數字。

將數字放入數組中,然后遍歷數組,這樣您就不必同時重復num1num2

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM