javascript - 基于传入参数的计算器函数
问题描述
我正在构建一个简单的计算器作为家庭作业。该函数接受两个数字(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
or0
来进行计算when is or
-
和使用or进行计算when is 。+
number2
undefined
0
(typeof number2 === 'undefined' ? 1 : 0)
number2
1
*
/
number2
undefined
推荐阅读
- java - 在插入变量之前从资源中获取字符串长度
- amazon-web-services - Ansible + cloudformation 删除所有 Stack 级标签
- python - 将 API 中的多个 JSON 附加到单个 JSON 文件中
- python - 在 python 中使用 OS.Walk() 计算子文件夹
- javascript - JS 在表单允许提交之前输入正确的短语
- node.js - 使用 Node.js 和 Express 的在线编译器
- scala - Gatling Scala 日期随机格式不正确
- c# - Visual Studio 中未抛出预期异常,Linq Select 语句意外过滤结果
- c# - 如何将 4 个参数从后面的代码传递给客户端
- java - 为什么这个赋值在 Java 泛型中是非法的?