視頻上說eval函數(shù)把遠程腳本返回的數(shù)據(jù)轉(zhuǎn)換成Json格式(還有(“+res+”)是什么意思?)但是server.php中不是已經(jīng)使用了json_encode函數(shù)嗎,那返回的本身不就是json格式嗎,為何還要轉(zhuǎn)換?

可奈姆
2014-11-29
4 回答
舉報
0/150
提交
取消
2015-05-18
還有(“+res+”)是什么意思?我知道這個是什么意思了?res是傳過來的json對象。
2015-05-18
還有(“+res+”)是什么意思?
2015-02-27
原因在于:eval 本身的問題。 由于 json 是以”{}”的方式來開始以及結(jié)束的,在 JS 中,它會被當(dāng)成一個語句塊來處理,所以必須強制性的將它轉(zhuǎn)換成一種表達式。
加上圓括號的目的是迫使 eval 函數(shù)在處理 JavaScript 代碼的時候強制將括號內(nèi)的表達式(expression)轉(zhuǎn)化為對象,而不是作為語句(statement)來執(zhí)行。舉一個例子,例如對象字面量 {},如若不加外層的括號,那么 eval 會將大括號識別為 JavaScript 代碼塊的開始和結(jié)束標記,那么{} 將會被認為是執(zhí)行了一句空語句。所以下面兩個執(zhí)行結(jié)果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]?
2015-01-26
eval()可使用 JSON.parse()來取代
將JavaScript對象表示法的JSON字符串轉(zhuǎn)換為對象(字符串轉(zhuǎn)對象)
所以他才能夠jsonObj.username