这篇文章主要介绍了为什么 JS 中 eval 处理 JSON 数据要加括号的相关资料, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
由于 Ajax 的兴起,JSON 这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的 JSON 数据转化为可用的 JavaScript 对象。利用 eval 函数无疑是一种简单而直接的方法。在转化的时候需要将 JSON 字符串的外面包装一层圆括号:
- var jsonObject = eval("(" + jsonFormat + ")");
为什么要加括号?
加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量 {},如若不加外层的括号,那么 eval 会将大括号识别为 JavaScript 代码块的开始和结束标记,那么{} 将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
- alert(eval("{}"); // return undefined
- alert(eval("({})");// return object[Object]
来源: