2013-02-24 28 views
0

我認爲jquery $ .parseJSON可以將jsons字符串轉換爲JavaScript對象,爲什麼有人仍然一起使用eval($。parseJSON)?爲什麼一起使用eval和parsonJson?

+0

你的意思是'eval($。parseJSON(x))'?這只是愚蠢的 - eval需要一個字符串,而不是JavaScript對象。只有當x包含json'「alert('foo')」' – Eric 2013-02-24 08:50:46

回答

0

似乎是多餘的。

jQuery parseJSON函數在支持它的瀏覽器中使用本機JSON。根據Douglas Crockford(原始JSON規範的作者),「解析方法使用eval方法進行解析,用多個正則表達式來防護它,以防止意外的代碼執行危害。」 如果瀏覽器本身不支持JSON,jQuery使用new Function構造函數返回解析的對象,這與eval()相當,並帶有一些範圍區別。

+0

時,它纔有意義另外,由於eval()期望爲字符串參數,並且$ .parseJSON()看起來像eval($。parseJSON()返回對象。 – lxgreen 2013-02-24 09:20:44

+0

實際上,在對象/數組上調用'eval'只是返回對象/數組 - 因此它是有效的。 – 2013-02-24 13:42:46

+0

@Idan:10倍,很高興知道。 – lxgreen 2013-02-24 13:46:39

相關問題