mathjs eval error: (intermediate value)(intermediate value)(intermediate value) is not a function
mathjs eval error: (intermediate value)(intermediate value)(intermediate value) is not a function
如果我运行一个代码:
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)。我不知道为什么会出现错误。
问题是您没有遵守该值,
obj.compiledExpressionS = parsedExpressionS.compile(math);
并且Sin
应该是小写的
工作 fiddle: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);
如果我运行一个代码:
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)。我不知道为什么会出现错误。
问题是您没有遵守该值,
obj.compiledExpressionS = parsedExpressionS.compile(math);
并且Sin
应该是小写的
工作 fiddle: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);