JSON.parse()与eval()的区别

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代码,跳转到第三方网站,很不安全。