为什么大家都不建议使用eval()这方法?是因为eval()方法会无条件执行传给它的代码,很容易导致安全问题,很多人不懂得eval()的正确用法,所以建议大家少用或者不用这个方法,那么有没有什么好的方法可以替代eval()?目前找到的有以下这三个:
方法一:
function evil(fn) {
var Fn = Function; //一个变量指向Function,防止有些前端编译工具报错
return new Fn("return " + fn)();
}
方法二:
function eval1 (str) {
var script = document.createElement("script");
script.type="text/javascript";
script.text=str;
document.getElementsByTagName("head")[0].appendChild(script);
document.head.removeChild(document.head.lastChild);
}
方法三:
JSON.parse()
解释JSON字符串,可以直接用JSON.parse()来解释成json对象;
需要知道的是一般也会用JSON.stringify()将json对象转换成json字符串,这两个常常互用