eval和JSON.parse都是JavaScript中用于解析字符串的函數。eval函數可以將字符串作為代碼來執行,而JSON.parse則是將JSON格式的字符串解析成JavaScript對象。
//eval示例 var num = 1; var str = 'num + 1'; console.log(eval(str)); //2 //JSON.parse示例 var jsonStr = '{"name": "Tom", "age": 18}'; var jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name); //Tom
雖然看起來兩者非常相似,但是使用eval函數時要注意潛在的安全問題。由于eval會執行字符串中的任何代碼,因此如果字符串來自不可信任的來源,會存在被注入惡意代碼的風險。
相比之下,JSON.parse只會解析JSON格式的字符串,因此不存在被注入惡意代碼的問題,更加安全可靠。
//eval安全問題示例 var str = 'alert("攻擊成功!")'; eval(str); //彈出“攻擊成功”的alert框 //JSON.parse示例 var jsonStr = '{"name": "Tom", "age": 18}'; var jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name); //Tom
綜上所述,雖然eval和JSON.parse都可以解析字符串,但是在實際使用中應該根據具體場景選擇合適的函數,在保證安全的前提下,JSON.parse是更加推薦的方式。
上一篇eval中的json