用 eval() 转换 Json 对象时,为什么要加括号?
生活随笔
收集整理的這篇文章主要介紹了
用 eval() 转换 Json 对象时,为什么要加括号?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
var dataObj=eval("("+data+")");//轉換為json對象
為什么 eval 這里,data 要用 "("、")" 括起來呢?
原因:由于json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
加上圓括號的目的是迫使 eval 函數在處理 JavaScript 代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語句(statement)來執行。
舉一個例子,例如對象字面量{},如若不加外層的括號,那么 eval 會將大括號識別為 JavaScript 代碼塊的開始和結束標記,那么{}將會被認為是執行了一句空語句。所以下面兩個執行結果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
節選自 http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html
總結
以上是生活随笔為你收集整理的用 eval() 转换 Json 对象时,为什么要加括号?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: masscan
- 下一篇: requests保持登录session