JSON的eval()读取法问题

Dark__Angel 2010-02-23 11:06:25
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};

上面的示例,创建了一个包括单独成员”bindings”的对象,此成员包括一个含有三个对象(”ircEvent”, “method”, 与 “regex”)的数组

成员可以通过.或者下标操作符检索。

myJSONObject.bindings[0].method // "newURI"

为了将JSON文本转换为对象,可以使用eval()函数。eval()函数调用JavaScript编辑器。由于JSON是JavaScript 的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生JavaScript的语法歧义。

var myObject = eval('(' + myJSONtext + ')');


这一段是从JSON官方剪来的,最后一段的大意就是用eval()读取JSON,但我想知道为什么使用eval()读取时,要在JSON的外面再加一层括号
var myObject = eval('(' + myJSONtext + ')');
...全文
336 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2010-02-24
  • 打赏
  • 举报
回复
去掉 ()执行下看看 有什么区别
这个区别就是含义
Dark__Angel 2010-02-24
  • 打赏
  • 举报
回复
<script type="text/javascript">
var a = eval("{a:'aaa'}");
var b = eval("(" + "{b:'bbb'}" + ")");
window.alert(a.a);
window.alert(b.b);

谢谢4楼,自己又写了个小例子就完全明白了!!
  • 打赏
  • 举报
回复
来学习了。。。。。。。。。。。。
jack_liu4Ye 2010-02-24
  • 打赏
  • 举报
回复
第一个问题,Eval函数的作用是将括号内的语句变成JS语句执行,第二个问题,那是高级JS的一种写法!!

fireman_me 2010-02-24
  • 打赏
  • 举报
回复
学习了。。。。。。。。。。。。。
hookee 2010-02-24
  • 打赏
  • 举报
回复
()的优先级做高。当(语句)的时候就先执行其中的语句了,
同样如果其中的语句是定义函数的话,那么 (定义匿名函数语句)先执行,然后再调用上述函数 fun(),
(function(){})() 相当于 var fun = function(){} 然后 fun();

在 eval('(' + "{a:b}" + ')'); 中,如果不加中间的()
就变成 eval("{a:b}"),相当于执行语句{a:b},执行该语句并没有意义,
要么就写成 eval("var obj = {a:b}"), 执行该语句就是为对象赋值
要么就加(),让({a:b})作一次运算返回得到对象.
Dark__Angel 2010-02-23
  • 打赏
  • 举报
回复
还是接上面的问题
if (!this.JSON) {
this.JSON = {};
}

(function () {
……略去此处无用代码……

}());

这种(function () {……}()); 表示形式是什么含义呢?用法是怎么样的?
谢谢回答
Dark__Angel 2010-02-23
  • 打赏
  • 举报
回复
补充一下,我另外在官网上下载了一个JSON解析器http://www.JSON.org/json2.js
它里面有段代码是这么写的
if (!this.JSON) {
this.JSON = {};
}

(function () {
……略去此处无用代码……

}());
请问为什么function ()函数外要加括号?也就是为什么是(function ())这种样子?
还有就是为什么这个函数没有名字?这样为什么会成立呢?
为什么不是function AA()或是var AA = function ()呢?
谢谢
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-02-23 11:06
社区公告
暂无公告