首页 > 解决方案 > 基于传入参数的计算器函数

问题描述

我正在构建一个简单的计算器作为家庭作业。该函数接受两个数字(number1、number2)和一个运算符(+、-、*、/)作为参数。

但是有几种情况:

  1. 如果缺少操作员 --> 返回“提供的数据错误”
  2. 如果不是,则正常计算
  3. 如果缺少数字 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,"+") 导致“提供了错误的数据。为什么?

标签: javascriptfunctionif-statement

解决方案


你可以这样做:

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)使用number2or0来进行计算when is or -和使用or进行计算when is 。+number2undefined0(typeof number2 === 'undefined' ? 1 : 0)number21*/number2undefined


推荐阅读