4 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
在代碼中使用eval是很危險(xiǎn)的,特別是用它執(zhí)行第三方的JSON數(shù)據(jù)(其中可能包含惡意代碼)時(shí),盡可能使用JSON.parse()方法解析字符串本身。該方法可以捕捉JSON中的語法錯(cuò)誤,并允許你傳入一個(gè)函數(shù),用來過濾或轉(zhuǎn)換解析結(jié)果。如果此方法以備Firfox 3.5 、IE8 及 Safari 4 原生支持。大多數(shù)javascript類庫包含的JSON解析代碼會(huì)直接調(diào)用原生版本,如果沒有原生支持的話,會(huì)調(diào)用一個(gè)略微不那么強(qiáng)大的非原生版本來處理。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
JSON.parse()用來將標(biāo)準(zhǔn)json字符串轉(zhuǎn)換成js對(duì)象;
eval()除了可以將json字符串(非標(biāo)準(zhǔn)的也可以,沒有JSON.parse()要求嚴(yán)格)轉(zhuǎn)換成js對(duì)象外還能用來動(dòng)態(tài)執(zhí)行js代碼。
例如:JSON.parse('{"name":"張三"}')能被成功轉(zhuǎn)換,但是JSON.parse('{name:"張三"}')、JSON.parse('{\'name\':"張三"}')和JSON.parse('{"name":\'張三\'}')都是不能轉(zhuǎn)換的;然而后面那三個(gè)可用用eval()來轉(zhuǎn)換;另外eval()還能執(zhí)行js代碼,如:eval('alert("你好!")');
添加回答
舉報(bào)