var jsonStr = $('#jsonData').val();
var json = eval('('+jsonStr+')');
上面两行代码出自《用js模拟PHP的print_r功能
》,用来把接收到的json串转换为js中的对象。既然json串已经是一个完美的对象直接量了,为什么非要在两端加上括号,为什么不能做如下简写呢?
var json = eval(jsonStr);
看了周爱民老师的《JAVASCRIPT语言精髓与编程实践
》P264的 5.2.2“动态执行过程中的语句、表达式与值”,才明白。
-----------
原因
-----------
eval把传入参数中的大括号视为一个复合语句的标识!比如
{name: "MyName", value:1}
eval会按照如下步骤解析:
- 第一个冒号成了“标签声明”标识符;
- (“标签声明”的左操作数)name成了标签;
- “MyName”成了字符串直接量;
- value成了一个变量标识符;
- 第二个冒号不能合理地作语法分析,出现语法分析期异常;
- ……
试着执行如下代码:
alert(eval('{value:1}')); //1
如果加上小括号,就可以返回对象了:
alert(eval('({value:1})')); //对象
分享到:
相关推荐
JS中的eval 为什么加括号呢?相信很多朋友都不是很清楚吧,下面小编通过本教程帮助大家学习JS中的eval 为什么加括号,感兴趣的朋友了解下吧
由于Ajax的兴起,JSON这种轻量级的数据格式作为...加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对
本文实例分析了javascript中eval函数用法。分享给大家供大家参考。具体分析如下: eval()只有一个参数,如果传入的参数不是字符串,则直接返回这个参数。否则会将字符串当成js代码进行编译,如果编译失败则...
我们知道,在很多脚本语言中都有eval函数,它可以把字符串转换为表达式并执行.如在javaScript中: var str = aid.value + ".style.top = 10;" 把一个id为"aid"的控制的值取出来加合并成一个字符串,如果aid的值是...
使用java来实现js中eval的功能,包括字符串的计算,判断真假等功能
ide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d...
eval解密脚本FLASH eval解密脚本 eval解密脚本
2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数...
eval使用方法 matlab
java实现eval函数,java文件放入eclipse直接可以运行。
计算器括号匹配与初等运算,包含HTML/CSS/JS
赠送jar包:rank-eval-client-6.2.3.jar; 赠送原API文档:rank-eval-client-6.2.3-javadoc.jar; 赠送源代码:rank-eval-client-6.2.3-sources.jar; 赠送Maven依赖信息文件:rank-eval-client-6.2.3.pom; 包含...
在Javascript中Eval函数的使用
1.参数会作为一个 Python 表达式(从技术上说是一个条件列表)被解析并求值 >>> x = 1 >>> eval('x+1') 2 2.去除字符串两边的引号 >>> a='srting' >>> print(a) srting >>> b=eval(a) >>> print(b...
在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%> 今天又学到一种,而且微软也说这种方法的效率要比以上两种高。 (...
ide-eval-resetter
2、能够快速破解网站EVAL加密的脚本3、可以辅助在自己的网站/博客作为一个款在线工具,方便自己以及方便其他需要的网友 使用方法:本工具来自国外的一篇博文日志,然后笔者整理成工具分享,我们需要直接把解压之后...
STM3210B-EVAL中文资料.pdf