论坛首页 AJAX版 JavaScript

关于Gecko的eval第二参数探密

浏览 3714 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (3)
作者 正文
最后更新时间:2008-07-20
什么都会错误的执行,
把全部代码copy出来,再具体位置上详细的解释,对大家才有帮助
   
0 请登录后投票
最后更新时间:2008-07-20
var a=(function(){   
var aaa=123;   
var bbb=456;   
return {   
fn:function(){aaa}//这样由于调用了本函数外部scope里面对象,所以SpiderMonkey保留了ScopeChain对象   
}   
})()   

eval("ccc=bbb",a.fn)   
alert(ccc)  


var a=(function(){   
var aaa=123;   
var bbb=456;   
return {   
fn:function(a){eval(a)}//这样由于函数内eval,eval默认搜索Scope Chain,所以SpiderMonkey保留了ScopeChain对象   
}   
})()   

eval("ccc=bbb",a.fn)   
alert(ccc)  


var a=(function(){   
var aaa=123;   
var bbb=456;   
return {   
fn:function(){bbb;return 123;}//这样虽然return 123,但是一样调用了外部Scope里面bbb对象,所以SpiderMonkey保留了ScopeChain对象   
}   
})()   

eval("ccc=bbb",a.fn)   
alert(ccc)  


var a=(function(){   
var aaa=123;   
var bbb=456;   
return {   
fn:function(){return 123}//这样没有调用函数外部Scope里面变量,所以SpiderMonkey没有保留ScopeChain对象   
}   
})()   

eval("ccc=bbb",a.fn)   
alert(ccc)  
   
0 请登录后投票
论坛首页 AJAX版 JavaScript

跳转论坛:
JavaEye推荐