为什么eval()处理json格式数据需要多加一个小括号

快乐打工仔 分类:实例代码

由于现阶段使用json格式数据在前后台进行数据传输。

关于json更多内容可以参阅json教程

下面就介绍一下为什么eval()处理json格式数据需要多加一个小括号。

首先说明一点json格式数据是一个字符串,很多人张口闭口json对象,其实这种叫法是错误的。

使用eval()将json格式数据转换为javascript对象语法结构如下:

var jsonObject = eval("(" + jsonFormat + ")");

看一段代码实例:

var strJSON='{"webName":"犀牛前端部落","url":"pipipi.net","age":"2"}';
var jsonObj=eval("("+strJSON+")");
console.log(jsonObj.webName);

eval()会创建一个执行环境,在这个环境中,如果没有多加一个小括号的话,就会被直接解读为:

{"webName":"犀牛前端部落","url":"pipipi.net","age":"2"}

这将会被javascript解析为一个标签语句,但是它又不完全符合标签语句的语法,所以会报错。

关于标签语句可以参阅javascript label标签语句一章节。

如果加上一个小括号的话,那么就是如下样子:

({"webName":"犀牛前端部落","url":"pipipi.net","age":"2"});

因为小括号这里是一个分组运算符,这个时候{}内容就会被解读为对象直接量,并返回这个对象直接量。

再来看一个代码实例加强一下理解:

console.log(eval("{}"));
console.log(eval("({})"));

回复

我来回复
  • 暂无回复内容