json.parse()和eval的区别到底在哪里该怎样选取

如果是专门操作JSON,当然用JSON.parse()。我写了六年JS,到今年才用了一次eval(),因为有人把操作数据属性的代码存在了数据库里,汗。。。
■网友
【json.parse()和eval的区别到底在哪里该怎样选取】 出于安全考虑用json.parse,它会自动检测是否符合json格式。而eval不会检测是否符合格式,如果字符串中有js代码时,eval会一并执行,例如:
\u0026lt;html\u0026gt;\u0026lt;head\u0026gt;\u0026lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"\u0026gt;\u0026lt;title\u0026gt;JaneYork的博客——eval测试\u0026lt;/title\u0026gt;\u0026lt;/head\u0026gt;\u0026lt;body\u0026gt;\u0026lt;input type="button" value="https://www.zhihu.com/api/v4/questions/53098924/测试" onclick="f()"\u0026gt;\u0026lt;/body\u0026gt;\u0026lt;script type="text/javascript"\u0026gt;function f(){\t/* eval("("+alert(123)+")"); */这里会弹框\tvar test = \u0026#39;{"b" : window.location.href="https://www.baidu.com" }\u0026#39;;这里会跳转\teval("("+ test +")");};\u0026lt;/script\u0026gt;\u0026lt;/html\u0026gt;详细理解JSON请看:详细理解JSON - JaneYork - 博客园
,eval执行了js代码,跳转到第三方网站,很不安全。
如果不清楚格式的话,可以使用json格式在线校验工具:在线JSON校验格式化工具(Be JSON)


    推荐阅读