javascript - javascript中是否有更安全的类似eval的函数无法解析变量?

标签 javascript eval

我的意思是只能进行逻辑和数学运算的函数,例如: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/

相关文章:

javascript - 以表格格式显示来自 XML 和 JSON 的数据

javascript - 在 Chrome 扩展程序中获取当前页面 URL

javascript - Backbone 的模型原型(prototype)获取 vs backbone 获取

javascript eval 上下文不包含 chrome 中的参数

javascript - 使用 eval 内存实现。 eval 的这种使用可以接受吗?

python - 在 numba/NumbaLSODA 中使用 eval() 吗?

Javascript:使全局 eval() 的行为类似于 object.eval()

javascript - JSFiddle环境,与backbone一起设置

javascript - 导入 header 类( Angular )

JavaScript eval() 与 `this`