我的意思是只能进行逻辑和数学运算的函数,例如:3+5<=9
, "string"=="string" && (3<9 || 12>3)
,但不是这样a+b<c
, "string".length > 3
或调用函数,因此程序员必须在评估之前解析(通过正则表达式或其他方式)所有可能的名称?
编辑:
所以我找到了一个使用 eval() 的充分理由......
最佳答案
说实话,我认为对你的问题最简单的回答是“不,没有”。
您可以自己编写一个,找到一个现有的(这将是一个 JS 库) - 或者使用一个解析器生成器来生成一个可以在 Javascript 上运行的解析器。
ANTLR就是这样一个工具/平台 - 您可以在 downloads page 上找到 Javascript 运行时下载。 。然而,您将需要 ANTLRWorks 工具才能掌握它,并生成实际有效的 Gamma 。
一旦您知道自己在做什么,就可以在几分钟内启动并运行一个基本的数学解析器(支持四个主要运算符)。
关于javascript - javascript中是否有更安全的类似eval的函数无法解析变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884391/