Ошибка оценки mathjs: (промежуточное значение) (промежуточное значение) (промежуточное значение) не является функцией - PullRequest
0 голосов
/ 25 августа 2018

Если я запускаю код:

    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). Я понятия не имею, почему ошибка появляется.

1 Ответ

0 голосов
/ 25 августа 2018

Проблема в том, что вы не указали значение

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);
...