javascript-IF ELSE运算符

问题描述 投票:0回答:4

学习基础知识并进行了此练习:

“编写函数addWithSurcharge,将两个金额加在一起。对于小于或等于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) {...

工作?我意识到无法执行||运算符,因为它可能会影响错误的数字。

javascript if-statement operators
4个回答
1
投票
将数字放入数组中,然后遍历该数组,因此您不必同时重复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));

1
投票
您也可以这样做:

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},它确实很好用!

0
投票
最基本的改进是可以调用两次的辅助函数:

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);


0
投票
您可以执行此操作的一种方法是使用三元运算符

function addWithSurcharge(num1,num2) { num1 += num1 <= 10 ? 1 : 2; num2 += num2 <= 10 ? 1 : 2; return num1 + num2; } console.log(addWithSurcharge(10,5));
如果使用?分配值时,它将评估?左侧的内容。然后返回:的左侧(如果为true)或右侧(如果为false)。
© www.soinside.com 2019 - 2024. All rights reserved.