【发布时间】:2022-06-27 23:05:27
【问题描述】:
我有两个数组 - 一个包含布尔值,另一个包含运算符:
to_eval = [true, true, false, false]
ops=['&&', '||', '&&']
为此,我想构建一个表达式
result = true && true || false && false
应该根据优先规则评估为真
如果我遍历正在评估的数组,结果是错误的。
我可以构建一个字符串并使用 Eval 或 Function - 但从我所阅读的内容来看,这可能会导致 Web 应用程序出现安全问题。
在 Javascript 中是否有一种方法可以构建表达式而不对其进行评估,直到它完全形成,以便在不使用 Eval 或 Function 的情况下遵守优先规则?
【问题讨论】:
-
如果值来自不受信任的来源,这只是一个安全问题。如果保证输入是这样的,那还不错。
-
但更一般的答案是使用创建您调用的闭包数组。对
&&使用一个函数,对||使用另一个函数。
标签: javascript arrays boolean expression evaluation