JS常见疑点点睛(不定期更新)
2013-05-14 11:07
225 查看
1、eval解析json时为什么要强制添加()?
var sts=eval("("+data+")"); 强制转化成json对象
为什么eval这里要添加 “("("+data+")");?
原因:这是eval本身的问题。
由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。
举例说明:
例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
对于这种写法,在JS中,可以到处看到。
var sts=eval("("+data+")"); 强制转化成json对象
为什么eval这里要添加 “("("+data+")");?
原因:这是eval本身的问题。
由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。
举例说明:
例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
对于这种写法,在JS中,可以到处看到。
相关文章推荐
- js常见问题汇总(不定期更新)
- apk常见工具使用【不定期更新】
- JS常见代码块,持续更新......
- JS常见问题集合(持续更新)
- android stuido常见问题查询网址(此贴不定期更新)
- 【不定期更新】FPGA/IC岗位常见笔试面试题总结
- Qt中常见错误整理(不定期更新)
- JS常见实用算法,不断更新中,欢迎大家提意见
- JS常见问题整理(持续更新)
- C++中常见错误整理(不定期更新)
- node.js学习总结(不定期更新)
- c++开发中常见bug总结(不定期更新)
- 前端常见BUG--js,及处理方法(持续更新)
- Linux 使用过程中常见问题及其解决方法(不定期更新)
- Windows 下编程的一些常见问题(不定期更新)
- 前端常见BUG--js,及处理方法(持续更新)
- 我总结的.NET常见面试考题(不定期更新)
- C语言不常见代码(不定期更新)
- ubuntu常见不常见用法(不定期更新)
- C语言不常见代码(不定期更新)