JS Switch计算器数量限制器

JS Switch calculator number limiter

我需要限制计算器的最大和最小输出值。我尝试了多种方法,总是报错。然后我尝试了这个,声明结果变量以便我可以捕获它并为我的限制器设置 if 语句,这次没有错误,但它不起作用。

let calc = function (operator, a, b = undefined) {
    let result
    if(result > 9999 || result < -9999) {
    console.log('Digit limit')
}
    switch (operator) {
     
        case '+':
            result = a + b;
            return result
        case '-':
            result = a - b;
            return result
        case '*':
            result = a * b;
            return result
        case '/':
            if (a === 0 || b === 0) {
                alert('Invalid operation');
            }
            result = a / b;
            return result
        case 'pow':
            result = Math.pow(a, b);
            return result

        case 'log':
            if (a <= 0) {
                return NaN
            }
            result = Math.log(a);
            return result
        case 'sqrt':
            if (a <= 0) {
                return NaN
            }
            result = Math.sqrt(a);
            return result
    }
  
}

您不必 return 在 switch 内。根据运算符和中断确定结果。之后,return result.

console.log(calc("+", 2, 5));
console.log(calc("/", 2, 0)); // throws
console.log(calc("pow", 2, 8));
console.log(calc("pow", 10, 20));

function calc(operator, a, b = 0) {
  let result = 0;
  switch (operator) {
    case '+':
      result = a + b; break;
    case '-':
      result = a - b; break;
    case '*':
      result = a * b; break;
    case '/':
      result = (a === 0 || b === 0) 
        ? 'Invalid operation (a or b = 0)' 
        : a / b; break;
    case 'pow':
      result = a**b; break;
    case 'log':
      result = a <= 0 ? NaN : Math.log(a); break;
    case 'sqrt':
      result = a <= 0 ? NaN : Math.sqrt(a);
    default: result = "unknown operator";  
  }
  // now return
  return Math.abs(result) > 9999 
    ? "invalid (> 9999 or < -9999)" 
    : result;
}