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

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