您的位置:首页 > Web前端 > JavaScript

eval解析ajax传回的json字符串为什么要用括号

2014-10-23 13:23 295 查看
javascript没有块级作用域,但可以用{}来分割代码,



function say() { {
var a = 1;
}{
//anotherCodeBlock
}
alert(a);
}
say(); // 仍然输出1

当用eval解析时,{}会被理解为一个代码块的开始,不会理解成为一个对象字面量。

加()是为了迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。

JSON格式的名字部分为什么要加引号?
因为eval函数会将{foo:”bar”}解释成合法的JavaScript语句,而非表达式。
但是人们往往想要的是让eval将这段代码解释成一个对象。所以JSON格式会强制你去在名字的外侧加上引号再结合圆括号,这样eval就不会错误的将JSON解释成代码块。
举例说明:
alert(eval('{foo:"bar"}')); // return "bar"
alert(eval('({"foo": "bar"})')); // return JSON object

alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: