JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。
出于安全考虑用json.parse,它会自动检测是否符合json格式。而eval不会检测是否符合格式,如果字符串中有js代码时,eval会一并执行,例如:
代码语言:javascript
复制
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JaneYork的博客——eval测试</title>
</head>
<body>
<input type="button" value="测试" onclick="f()">
</body>
<script type="text/javascript">
function f(){
/* eval("("+alert(123)+")"); */这里会弹框
var test = '{"b" : window.location.href="https://www.baidu.com" }';这里会跳转
eval("("+ test +")");
};
</script>
</html>
详细理解JSON请看:一分三十秒理解JSON
,eval执行了js代码,跳转到第三方网站,很不安全。