- 作用:将字符串转换成可执行的JS代码。
- 场景使用1:
这是一个数组用“+”连接转换成的字符串再转换成代码执行求和的例子。
var arr = [1, 2, 3, 4, 5];
var total = eval(arr.join("+"));
console.log(total); // --> 15
步骤解析:
1)var str = arr.join("+"); //--> "1+2+3+4+5"
2)eval(str); //--> eval("1+2+3+4+5")
3)var total = 1+2+3+4+5; //-->15
- 场景使用2:
将Json格式的字符串转换为Json格式的对象。在window浏览器对象下,有个JSON属性,提供了parse和stringify两个方法,但是这个JSON属性在IE 6-7下没有,所以使用时应做兼容处理,以下是处理parse这个方法。
function toJson(jsonStr){
var jsonObj = null;
try{
jsonObj = JSON.parse(jsonStr);
}catch(e){
jsonObj = eval("("+ jsonStr +")");
}
return jsonObj;
}
var str = '{"name":"zzq"}';
console.log(toJson(str)); //-->Object {"name": "zzq"}
注意:
jsonObj = eval("("+ jsonStr +")");
不能写成 jsonObj = eval( jsonStr ); 因为在使用eval来解析json格式字符串的时候,会将“{ }”解析为代码块,而不是字面量。所以需要添“()”来避免这种情况。