eval函數

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • eval函數會把字符串按照php代碼來執行。 如果字符串是合法的php腳本,則eval會返回字符串中return的...
    何幻閱讀 1,711評論 0 0
  • var txt = '{ "employees" : [' +'{ "firstName":"Bill" , "l...
    金星show閱讀 1,162評論 0 0
  • 今天工作中看見了一段代碼,其中有一個eval()函數,沒有見過,故查之。 功能:將字符串str當成有效的表達式來求...
    靜行vchh閱讀 2,721評論 0 0
  • 每個人都有自己的選擇,難道只有按照你們的想法走,才是對的么?
    so八千米深海七厘米蔚藍閱讀 145評論 0 0
  • 昨晚由木君來了電話,不知是因為太久沒有和她聊天還是打開了話匣子產生了共鳴,聊了近一個小時。 由木,何許人也?她是我...
    游弋惡靈閱讀 615評論 1 1