- 作用:將字符串轉換成可執行的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格式字符串的時候,會將“{ }”解析為代碼塊,而不是字面量。所以需要添“()”來避免這種情況。