如何在JavaScript中对字符串进行数学计算?

3

var string = "2+3-1";
document.write(string);

在上述代码中,我有一个包含数字、加号和减号运算符的字符串。我希望在显示它时计算这个字符串。也就是说,当我想要展示时,它应该计算并显示4。我尝试将它们转换为数字,但是会出现错误。
2个回答

5
您可以使用内置的方法eval() 注意: 永远不建议使用eval(),您应该使用某种外部库,比如https://mathjs.org/

var string = "2+3-1";
document.write(eval(string));


5
如果字符串没有硬编码,应该发出非常不安全的警告。如果仅用于进行数学运算的话,更安全的替代方案是使用类似 mathjs 的库。 - Aplet123
1
@Aplet123 谢谢。我已经添加了一条注释。 - Maheer Ali
1
谢谢你的回答。为什么eval()从来没有被推荐使用? - Elias Achilles

1
如果您只使用加号和减号,您可以这样做:

var string = "2+3-1";
document.write(string);

var result = string.match(/([-+]?\d+)/g).reduce((a, e) => a- -e, 0);
document.write(' = ' + result)


太棒了!有一个问题,你是如何将字符串转换为数字的? - Elias Achilles
@EliasAchilles,你的意思是什么? - Kosh
我的意思是,在上面的代码中,您不能对字符串进行数学运算。变量result仍然是字符串,它不应该执行计算,就我所知。但它却这么做了。 - Elias Achilles
@EliasAchilles,var result是通过matchreduce方法计算出来的数字,而不是字符串。也许你对我的代码格式感到困惑了。 - Kosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接