為什么JS中eval處理JSON數(shù)據(jù)要加括號
由于Ajax的興起,JSON這種輕量級的數(shù)據(jù)格式作為客戶端與服務器之間的傳輸格式逐漸地流行起來,進而出現(xiàn)的問題是如何將服務器端構建好的JSON數(shù)據(jù)轉(zhuǎn)化為可用的JavaScript對象。利用eval函數(shù)無疑是一種簡單而直接的方法。在轉(zhuǎn)化的時候需要將JSON字符串的外面包裝一層圓括號:
var jsonObject = eval("(" + jsonFormat + ")");
為什么要加括號?
加上圓括號的目的是迫使eval函數(shù)在處理JavaScript代碼的時候強制將括號內(nèi)的表達式(expression)轉(zhuǎn)化為對象,而不是作為語句(statement)來執(zhí)行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始和結束標記,那么{}將會被認為是執(zhí)行了一句空語句。所以下面兩個執(zhí)行結果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關文章
javascript設計模式 – 單例模式原理與應用實例分析
這篇文章主要介紹了javascript設計模式 – 單例模式原理與應用,結合實例形式分析了javascript單例模式原理、定義、應用場景及相關操作注意事項,需要的朋友可以參考下2020-04-04JS+CSS實現(xiàn)自動切換的網(wǎng)頁滑動門菜單效果代碼
這篇文章主要介紹了JS+CSS實現(xiàn)自動切換的網(wǎng)頁滑動門菜單效果代碼,涉及JavaScript基于時間函數(shù)動態(tài)變換頁面tab樣式的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09document.onreadystatechange事件的用法分析
這里主要介紹document.onreadystatechange事件的使用方法, 一般多用于實時監(jiān)控用戶的輸入2009-10-10JS實現(xiàn)網(wǎng)頁標題隨機顯示名人名言的方法
這篇文章主要介紹了JS實現(xiàn)網(wǎng)頁標題隨機顯示名人名言的方法,涉及JavaScript中字符串、數(shù)組及隨機數(shù)的相關操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11