[转]js 字符串形式的计算表达式 获得计算结果
原文地址:Javascript替代eval方法 - 爱博子 - 博客园
首先想到用eval,但是这个方法不安全,MDN也不建议使用了,可以使用下面的方法1
通常我们在使用ajax获取到后台返回的json数据时,都要使用 eval
这个方法将json字符串转换成对象数组, 像这样:
obj = eval('('+data+')')
而使用这个方法会导致编辑器中的jshint报错:
JSHint 6:19 eval can be harmful.
SO. 使用替代eval的方法即可拯救强迫症患者:
方法1:
//计算表达式的值
function evil(fn) {
var Fn = Function; //一个变量指向Function,防止有些前端编译工具报错
return new Fn('return ' + fn)();
}
方法1亲测有效!
其他参考文章:
js 规则解析, 字符串中携带括号、加、减、乘、除运算,精度丢失的问题;字符串加减乘除运算_js 判断该字符串是否是完整的运算式,含有加减乘除括号的运算符-CSDN博客