我如何用更安全的东西代替危险的eval()方法?我需要带开关盒吗?

问题描述 投票:0回答:1

我正在练习Javascript,并从具有很多重复的计算器代码开始。我做了很多简化,但是我知道eval()方法不是...呵呵...“推荐”。


let currentResult = 0;

function calculate(method){
  const calculation = `${currentResult} ${method} ${userInput.value}`;
  currentResult = eval(calculation);
  outputResult(currentResult, calculation);
}
addBtn.addEventListener('click', ()=> calculate('+'));
subtractBtn.addEventListener('click', ()=> calculate('-'));
multiplyBtn.addEventListener('click', ()=> calculate('*'));
divideBtn.addEventListener('click', ()=> calculate('/'));

javascript operators eval
1个回答
1
投票

您可以为每个运算符使用具有功能的对象。

const
    operators = {
        '+': (a, b) => a + b,
        '-': (a, b) => a - b,
        '*': (a, b) => a * b,
        '/': (a, b) => a / b
    };

let currentResult = 0;

function calculate(method) {
    if (sign in operators) {
        currentResult = operators[sign](currentResult, +userInput.value);
    }
    outputResult(currentResult, calculation);
}

addBtn.addEventListener('click', () => calculate('+'));
subtractBtn.addEventListener('click', () => calculate('-'));
multiplyBtn.addEventListener('click', () => calculate('*'));
divideBtn.addEventListener('click', () => calculate('/'));
© www.soinside.com 2019 - 2024. All rights reserved.