一尘不染

在JavaScript中将字符串评估为数学表达式

javascript

如何解析和评估字符串(例如'1+1')中的数学表达式而不调用eval(string)其数值?

在该示例中,我希望函数接受'1+1'并返回2


阅读 283

收藏
2020-04-25

共1个答案

一尘不染

我最终选择了该解决方案,该解决方案可用于对正整数和负整数进行求和(对正则表达式进行少许修改也可用于十进制):

function sum(string) {
  return (string.match(/^(-?\d+)(\+-?\d+)*$/)) ? string.split('+').stringSum() : NaN;
}

Array.prototype.stringSum = function() {
    var sum = 0;
    for(var k=0, kl=this.length;k<kl;k++)
    {
        sum += +this[k];
    }
    return sum;
}

我不确定它是否比eval()快,但是由于必须多次执行该操作,因此与创建javascript编译器实例负载相比,运行此脚本要舒服得多

2020-04-25