[轉]javascript eval函數解析json數據時爲什加上圓括號eval("("+data+")")

javascript eval函數解析json數據時爲何 加上圓括號?
爲何要 eval這裏要添加 「("("+data+")");//」呢?
 
緣由在於:eval自己的問題。 因爲json是以」{}」的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,因此必須強制性的將它轉換成一種表達式。

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

 ****************************************************************************************************************************************************************************************css

 《javascript 高級程序設計 第二版》page73,第五章,引用類型html

5.1object類型前端

到目前爲止,咱們看到的大多數引用類型值都是object類型的實例;並且,object也是ECMAScript中使用最多的一個類型。雖然object的實例不具有多少功能,但對於在應用程序中存儲和傳輸數據而言,它們確實是很是理想的選擇。java

  建立object實例的方式有兩種。第一種是使用new操做符後跟object構造函數,以下所示:jquery

var person=new object();git

person.name="Nicholas";程序員

person.age=29;github

  另外一種方式是使用對象字面量表示法。對象字面量是對象定義的一種簡寫形式,目的在於簡化建立包含大量屬性的對象的過程。下面這個例子就使用了對象字面量語法定義了與前面那個例子中相同的person對象:chrome

var person={

         name:"Nicholas",

         age:29

};

在這個例子中,左邊的花括號({)表示對象字面量的開始,由於它出如今了賦值操做符的後面(在其餘環境中,左花括號表示的是語句塊的開始)。而後,咱們定義了name屬性,以後是一個冒號,再後面是這個屬性的值。在對象字面量中,使用逗號來分隔不一樣的屬性,所以「Nicholas」後面是一個逗號。可是,在age屬性的值29的後面不能添加逗號,由於age是這個對象的最後一個屬性。在最後一個屬性後面添加逗號,會在IE及Opera中致使錯誤。

   在使用對象字面量語法時,屬性名也可使用字符串,以下面這個例子所示:

  var person={

   "name":"Nicholas",

  "age":29

};

  以上代碼也會獲得與前面例子相同的結果;建立一個帶有name和age屬性的新對象。

  另外,使用對象字面量語法時,若是留空其花括號,則能夠定義只包含默認屬性和方法的對象,

---下面這個是天藍本身找的---

http://www.zhihu.com/question/19884767

在 JavaScript 中,怎樣把一個對象轉化成 JSON 字符串?

用或者不用 jQuery。
是問如何把js對象方便的轉爲json字符串哦~~

(而不是把json字符串變成js對象)
相關文章
相關標籤/搜索