学习基础知识并进行了此练习:
“编写函数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) {...
工作?我意识到无法执行||运算符,因为它可能会影响错误的数字。
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));
如果使用?分配值时,它将评估?左侧的内容。然后返回:的左侧(如果为true)或右侧(如果为false)。