如何在闭包范围之外使用jQuery?

时间:2014-12-16 09:41:46

标签: javascript jquery

很抱歉,如果此类问题多次询问过,但我对jQuery编码有点不清楚:

来自http://code.jquery.com/jquery-latest.js

(function(global,factory){
  //some checks and coding
})(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
  //coding stuff
})

所以,jQuery在该闭包中使用了编码,但jQuery在该范围之外是如何可用的?

2 个答案:

答案 0 :(得分:1)

在封闭内部,你可以找到这个line of code

return (window.jQuery = window.$ = jQuery);

因此,jQuery构造函数被明确地分配给window.jQuery。这就是为什么它可以在外面使用。

答案 1 :(得分:1)

在这个IEFE闭合的最后,您可以看到行

// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === strundefined ) {
    window.jQuery = window.$ = jQuery;
}

他们将$jQuery标识符导出到全局window对象。具有// coding stuff本身的此函数是您发布的IEFE的第二个参数,并且将根据可用(或不可用)的模块加载器适当调用factory