gpt4 book ai didi

javascript - 评估备选方案

转载 作者:行者123 更新时间:2023-11-30 07:42:01 25 4
gpt4 key购买 nike

此代码用作计算器,但 codeacademy 的草稿本告诉我 eval 是邪恶的。有没有另一种方法可以在不使用 eval 的情况下做同样的事情?

var calculate = prompt("Enter problem");
alert(eval(calculate));

最佳答案

eval 将字符串输入作为 JavaScript 计算,巧合的是 JavaScript 支持计算并理解 1+1,这使得它适合作为计算器。

如果您不想使用 eval,这很好,您必须自己解析该字符串,最后,自己进行计算(虽然不完全是您自己)。看看this math processor ,它可以满足您的需求。

基本上你要做的是:

  1. 逐字符读取输入字符串(遇到这种问题还是有可能的)
  2. 构建一个你想做的 Action 树
  3. 在字符串的末尾,您评估树并进行一些计算

例如您有"1+2/3",这可以计算为以下数据结构:

     "+"
/ \
"1" "/"
/ \
"2" "3"

然后您可以从上到下遍历该结构并进行计算。首先你有 "+",它的左边是 1,右边是一些表达式,所以你必须先评估那个表达式。所以你转到 "/" 节点,它有两个数字子节点。知道这一点后,您现在可以计算 2/3 并将整个 "/" 节点替换为该结果。现在您可以再次向上计算“+”节点的结果:1 + 0.66。现在用结果替换该节点,剩下的就是表达式的结果。

关于这在您的代码中的样子的一些伪代码:

calculation(operator, leftValue, rightValue):
switch operator {
case '+': return leftValue + rightValue
case '-': return 42
}

action(node):
node.value = calculation(node.operator, action(node.left) action(node.right))

您可能已经注意到,树的设计方式遵循运算符优先级。 / 的级别低于 +,这意味着它首先被计算。

无论您如何详细地执行此操作,基本上都是要走的路。

关于javascript - 评估备选方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com