javascript - 在这种情况下,有什么替代方法可以替代 eval() 呢?还有其他选择吗?

标签 javascript reactjs

因此,我创建了一个计算器,我的 equals 按钮使用 eval() 函数。我正在寻找使用 eval 函数的替代方法,因为我不断收到有关使用 eval 危险的安全警告。这是否意味着有人可以通过我的等于按钮入侵我的计算机?

代码可以在计算器基础组件 here 第 51 行找到:

handleEquals() {
  this.setState(prevState => {
    return {
      output: isNaN(prevState.output.toString().slice(-1))
        ? prevState.output
        : eval(prevState.output)
    }
  })
}

最佳答案

您需要解析该表达式。您可以自己执行此操作,也可以使用像 math.js 这样的库(请参阅 this 示例。

虽然我不建议您为这些表达式编写自己的解析器,但我发现这里有一篇文章看起来可以帮助您入门:https://www.freecodecamp.org/news/parsing-math-expressions-with-javascript-7e8f5572276e/

另一种解决方法是自动标记该术语,而不是创建字符串。我的意思是将输入到计算器中的每个术语存储在一个对象或类似的东西中。您仍然需要解析标记,但之后不需要解析字符串。

关于javascript - 在这种情况下,有什么替代方法可以替代 eval() 呢?还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268912/

相关文章:

javascript 在继续之前等待整个函数被执行

javascript - 图表工作不正确 chart.js

reactjs - 在没有回调函数的输入类型中设置 State

reactjs - Mobx 使用参数计算 (compulatedFn) 和 TypeScript - 这是什么?

reactjs - Jest 错误 - 未实现 : navigation (except hash changes) when click event is triggered on an anchor element

Javascript - 删除另一个字符之前的所有字符 '0'

javascript - 错误建议自动完成文本框 MVC 和 Javascript

reactjs - 如何为不同的商店设置多个供应商?

javascript - 添加博客文章后 Redux 状态未更新

javascript - 使用 z-index 更改类