我正在构建一个简单的计算器作为作业。该函数使用两个数字(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,“ +”)导致“提供了错误的数据。为什么?
最佳答案
您可以执行以下操作:
function calc(par1, par2, par3) {
var number1 = par1;
var operator;
var number2;
if (typeof par2 === 'string') {
operator = par2;
} else {
number2 = par2;
operator = par3;
}
if (typeof operator === "undefined") {
return "wrong data provided"
} else {
if (operator == "+") {
return number1 + (number2 || 0);
} else if (operator == "-") {
return number1 - (number2 || 0);
} else if (operator == "*") {
return number1 * (typeof number2 === 'undefined' ? 1 : 0);
} else if (operator == "/") {
return number1 / (typeof number2 === 'undefined' ? 1 : 0);
}
}
}
console.log(calc(50, '+'));
console.log(calc(50, '*'));
console.log(calc(50, 20, '+'));
console.log(calc(50, undefined, '*'));
console.log(calc(50, 10));
在这里,当
(number2 || 0)
为number2
或0
时,我使用-
进行+
和number2
操作的undefined
或0
进行计算。(typeof number2 === 'undefined' ? 1 : 0)
和number2
用于在1
为*
时对/
和number2
操作使用undefined
或进行计算。关于javascript - 基于传入参数的计算器功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57772624/