eval函數的工作原理
eval函數會評估一個給定的含有javascript代碼的字串,並且視圖去執行包含在字串裡的運算式或者
一系列的合法的javascript語句。eval函數將把最後一個運算式或者語句所包含的值或引用作為返回值。
console.info(eval("alert('a');alert('b')"))console.info(eval("x=10;y=20;alert(x*y)")); //200console.info(eval("3+6")); //9
JSON格式
json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種複雜的結構
1、對象:對象在js中表示為“{}”括起來的內容,資料結構為 {key:value,key:value,...}的鍵值對的結構,在物件導向的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理 解,取值方法為 對象.key 擷取屬性值,這個屬性值的類型可以是 數字、字串、數組、對象幾種。
2、數組:數組在js中是中括弧“[]”括起來的內容,資料結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引擷取,欄位值的類型可以是 數字、字串、數組、對象幾種。
經過對象、數組2種結構就可以組合成複雜的資料結構了。
{ "acceptIs": null, "entity": null, "refuseIs": null, "result": { "pageSize": 10, "resultList": [ { "SHNOTE": "法拉利F40", "STATE": "提交", "CTIME": "2013/12/31 13:53:28", "PHONE": "13111050937", "ID": "40288ba54347286501434736c6c60000", }, ], "totalPage": 1, "totalSize": 4 }}
eval和JSON
利用eval函數可以將JSON資料轉化為可用的javascript對象。
var datas=eval("("+data+")");
為什麼要加括弧?
加上圓括弧的目的是使eval函數在評估javascript代碼的時候強制將括弧內的運算式轉化為對象,
而不是作為語句來執行。例如對象{},如若不加外層的括弧,那麼eval會將大括弧識別為javascript代碼塊的開始和結束標記,那麼{}將會被認為是執行了一句空語句。如下:
console.info(eval("{}")); //undefined console.info(eval("({})")); //Object {}
涉及項目代碼:
$(document).ready(function(){$.post('/homea/admin/UserBookView.do', {}, function(data) { var datas=eval("("+data+")");for(var i=0;i