一个暂时不解的JavaScript问题

今天编写了一个jQuery插件,虽然效果嘛是达到目的了,但是里边有一个问题暂时无法理解,先记下来再研究:

(function($){
    var hello = 'hello';
    $.myPlugIn = {
        sayHello:function(){ alert(hello+' world!')}
}
})(jQuery);

使用$.myPlugin.sayHello()可以看到正确的'hello world!'。但问题是hello这个变量生存在哪里呢?也就是这段代码组成的闭包不可能是嵌入到$命名空间中,也不会是在$.myPlugin中(是其父闭包)。那么她的生存期是什么?

 

补充:

唯一的解释是,sayHello生存于最外层的闭包,虽然对外来说可见的只有sayHello函数,但是他的闭包却躲在暗处,默默的为其提供支持。

posted @ 2012-09-13 09:30  雨吁的嘘  阅读(127)  评论(0)    收藏  举报