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]
如
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]
相关文章推荐
- var obj=eval((+data+));为毛加括号与将JSON的字符串解析成JSON数据格式
- 为什么eval某个json字符串时要加括号?
- AJAX html 传输json字符串&&巧妙运用eval()来解析返回的JSON字符串
- ajax查询数据库,服务器传回json字符串,js解析json
- 为什么使用eval()将json字符串转换为对象要多加一个小括号
- 为什么eval转换json对象字符串时要加括号?
- 为什么eval某个json字符串时要加括号?
- 使用javascript的eval函数解析json字符串,提示“not avalible”怎么办?
- JSON是什么-javascript eval解析json字符串为对象
- 转:使用eval()解析JSON格式字符串应注意的问题
- JavaScript eval处理JSON数据 为什么要加括号
- ajax请求返回json字符串解析方式
- 浏览器[IE] Ajax Struts Json返回json字符串,解析不了 提示保存或下载 解决方式
- eval解析字符串为JSON对象
- IE8下struts2 采用ajax提交表单,返回json字符串,解析不了,直接保存json字符串。提示下载action.
- JS中eval解析字符串为json格式
- Ajax使用方法,经典Ajax封装,可接收解析后台传回的json对象和json数组
- JS中eval处理JSON数据 为什么要加括号
- eval解析JSON字符串成json数据格式
- 使用eval()解析Json字符串