【问题标题】:mathjs eval error: (intermediate value)(intermediate value)(intermediate value) is not a functionmathjs eval 错误:(中间值)(中间值)(中间值)不是函数
【发布时间】:2018-08-25 14:23:34
【问题描述】:
如果我运行代码:
obj = {};
obj['number'] = 1;
obj['expressionS'] = 'Sin(0.5 * c1)';
obj['compiledExpressionS'] = null;
let cnr = 'c' + obj.number;
let params = {};
params[cnr] = 2;
var parsedExpressionS = math.parse(obj.expressionS);
obj.compiledExpressionS = parsedExpressionS.compile();
let value = obj.compiledExpressionS.eval(params);
我会得到一个错误(在最后一行抛出):
(中间值)(中间值)(中间值)不是函数。这里使用了 Mathjs 库(文档:http://mathjs.org/docs/expressions/parsing.html)。我不知道为什么会出现错误。
【问题讨论】:
标签:
javascript
eval
mathjs
【解决方案1】:
问题是你没有遵守价值,
obj.compiledExpressionS = parsedExpressionS.compile(math);
Sin 应该是小写
工作小提琴:http://jsfiddle.net/oxb3sp5o/414/
工作代码
obj = {};
obj['number'] = 1;
obj['expressionS'] = 'sin(0.5 * c1)';
obj['compiledExpressionS'] = null;
let cnr = 'c' + obj.number;
let params = {};
params[cnr] = 2;
var parsedExpressionS = math.parse(obj.expressionS);
obj.compiledExpressionS = parsedExpressionS.compile(math);
let value = obj.compiledExpressionS.eval(params);
console.log(value);