为什么将jQuery作为参数传递给(function($){..})(jQuery)闭包装,而不是局部变量?

don*_*ote 4 javascript jquery

闭包装(function($){..})(jQuery);是一种使用局部变量而不是全局变量的好方法.$包装器中定义的两者和任何变量和局部函数仅在包装器内可见,而不在外部.这太好了,我一直都在使用它.

(function($){
  [..]
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

但是,我一直想知道为什么我们传递jQuery(可能还有其他东西)作为参数,而不是使用局部变量声明.

(function(){
  var $ = jQuery;
  [..]
})();
Run Code Online (Sandbox Code Playgroud)

这不会一样好,而且更透明吗?

Raf*_*ski 6

我看到前一种方式更好的原因之一:

(function(){
  var $ = jQuery;
  [..]
  var jQuery = foo;
})();

在此示例中,变量"$"将因提升而未定义.

  • 我总是喜欢不可能的事情,特别是在选择我将在我编写的每一段代码中使用的模式时. (3认同)
  • 在我看来,这是小边缘案件中最小的一个. (2认同)