我正在做的是创建一个真值表生成器。使用用户提供的函数(例如a && b || c
),我试图让 JavaScript 显示 a、b 和 c 的所有组合以及函数的结果。
关键是我不完全确定如何解析用户提供的函数。用户基本上可以将他想要的所有东西放在一个函数中,这可能会产生我的网站被更改等的效果。
eval()
根本不安全;两者都不是new Function()
,因为两者都可以使用户在功能中随心所欲。通常JSON.parse()
是一个很好的替代方法eval()
,但是 JSON 中不存在函数。
所以我想知道如何将自定义布尔运算符字符串解析为a && b || c
函数,而忽略任何恶意代码字符串。&&, ||, !
函数内部只允许使用布尔运算符 ( )。