有一个代码:
let x = 5;
let formula = '2 + 4';
ley y = ...;
我如何使用它来y使用公式为新变量赋值'2 + 4'?我可以将公式转换为这样的数组:['2', '+', '4']. 接下来,找到数组中的数学运算,得到这个数学运算的结果,其中两个操作数位于数组的左侧和右侧。
在这种情况下如何:
let x = 5;
let formula = 'x + 4';
let y = ...;
? 因为那样我就能做到['x', '+', '4']。我无法使用变量来计算它x。eval不考虑。这就是我正在寻找的替代方案。我也想没有图书馆,尽管它们是可以接受的。
如果变量是全局变量(这不太可能),那么它可以从 window.properties 中获取。在其他情况下,最好将有效变量添加到对象并从那里获取它们。同样,函数应该添加到字典中。
如果所有操作的优先级都相同,那么解决方法就很简单了:
如果优先级不同,则不将公式解析为字符串,而是解析为树是有意义的: