eval函數解析JSON 數據出錯

描述:使用eval函數解析JSON數據出錯報express

這個錯誤。json

經使用debug測試才發現是我語法有問題:函數

沒有解決前代碼:測試

var ArrayData = eval(data);spa

解決後代碼:debug

var JsonData = eval('('+data+')');orm

爲何要 eval這裏要添加 '('+data+')'呢?對象

緣由在於:eval自己的問題。 因爲json是以」{}」的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,因此必須強制性的將它轉換成一種表達式。ip

加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化爲對象,而不是做爲語句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括號,那麼eval會將大括號識別爲JavaScript代碼塊的開始和結束標記,那麼{}將會被認爲是執行了一句空語句。因此下面兩個執行結果是不一樣的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]it

相關文章
相關標籤/搜索