【问题标题】: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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-20
      • 2022-12-08
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多