javascript - 如何将变量表达式转换为可执行代码(而不是替换其中的值)

标签 javascript

我现在正在处理一个个人项目(我正在尝试使用 JavaScript 中给定的表达式绘制图表),但我遇到了一个问题。

假设s = "3x^2+4x+5",我正在尝试将其转换为return 3*x*x + 4*x + 5 ,在函数中

myGraph.drawEquation(function(x) {
    return 3*x*x + 4*x + 5;
}, 'green', 3);

我环顾四周,发现了 eval(),但它需要将一个值替换为 x。其他指南说我需要制作自己的解析器,但是如何创建一个执行上述操作的解析器?

目前我有一个函数可以将 s = "3x^2+4x+5" 转换为 ["+3x^2","+4x","+5"] ["+3*x*x","+4*x","+5"],如果有帮助的话。

(抱歉多次编辑)

最佳答案

您可以使用 math.js 的表达式解析器为此,它支持定义函数:

var f = math.eval('f(x) = 3x^2+4x+5');
console.log(f(1)); // outputs 12
console.log(f(2)); // outputs 25
console.log(f(3)); // outputs 44

math.js 有自己的表达式解析器,它不使用 JavaScript 的 eval 函数。

关于javascript - 如何将变量表达式转换为可执行代码(而不是替换其中的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28620667/

相关文章:

javascript - 如何使用Ajax在特定时间后重新加载/刷新 'id'?

javascript - 我如何捕获服务器的响应

javascript - 删除特定 div 内的 <br> 标签

javascript - NodeJS(后端)从POST调用接收数据然后如何在ReactJS(前端)中显示?

javascript - 如何将 php 输出值显示到 Javascript var 属性中?

javascript - 如何通过 Jquery 动态删除表中的记录

javascript - 绑定(bind) this 后 setState 不是函数

单击 Javascript - 函数的两个部分,但一次只能工作一个

JavaScript Unicode 输入文本框

javascript - 在按钮 jquery 中删除并添加一个类,无法使其工作