(function(fn){
var able=123;
function tmp(){
fn()
};
return tmp();
})(function(){alert(able)});
报错;但是:
(function(fn){
var able=123;
function tmp(){
(function(){
alert(able)
})();
};
return tmp()
})();
弹出123 这是为什么??
在全局作用域定义一个able = 33, 结果会弹出33。你可以试一下
建议看看《你不在知道的js》对闭包作用域的解惑。