【发布时间】:2020-01-06 09:59:50
【问题描述】:
我正在构建一个简单的计算器作为家庭作业。该函数接受两个数字(number1、number2)和一个运算符(+、-、*、/)作为参数。
但是有几种情况:
- 如果缺少运算符 --> 返回“提供的数据错误”
- 如果不是,则正常计算
- 如果缺少数字 2 --> 假定数字“0”用于 + & - 计算,“1”用于 * & / 计算
编辑:场景 3 应该只考虑传入的 2 个参数(1 个数字和 1 个运算符)。我知道这不是调用函数的正确方法,但它是我尝试解决的任务的一部分.
这是我尝试过的
function calc (number1, number2, operator) {
if (operator == undefined) {
return "wrong data provided"
} else {
if (operator == "+") {
return number1+number2
} else if (operator == "-") {
return number1-number2
} else if (operator == "*") {
return number1*number2
} else if (operator == "/") {
return number1/number2
}
}
if (number2 == undefined) {
if (operator == "+") {
number2=0;
return number1+number2
} else if (operator == "-") {
number2=0;
return number1-number2
} else if (operator == "*") {
number2=1;
return number1*number2
} else if (operator == "/") {
number2=1;
return number1/number2
}
} else {
if (operator == "+") {
return number1+number2
} else if (operator == "-") {
return number1-number2
} else if (operator == "*") {
return number1*number2
} else if (operator == "/") {
return number1/number2
}
}
}
calc(50,"+") 导致“提供了错误的数据。为什么?
【问题讨论】:
-
参数按顺序排列,意思是
calc(50,"+")有number1作为50,number2作为"+"和operator作为undefined。 -
你的
number2参数在哪里? -
对不起,我忘了说,它应该只考虑 1 个数字和 1 个参数被传递。
-
除了你如何调用函数之外,你还有错误的检查顺序,如果
operator不是undefined,你永远不会检查number2是否是undefined。如果operator是undefined或+、-、*或/字符中的任何一个,您的函数将始终从第一个if...else语句返回。 -
正如一般的想法,如果你假设 + 和 - 为 0,* 和 / 为 1,如果 number2 缺失,这只是一种复杂的说法“如果 number2 缺失,返回数字 1 ”。为您节省大量代码和检查。
标签: javascript function if-statement