1. 程式人生 > >jQuery中$(function(){})與(function($){})(jQuery)、$(document).ready(function(){})等的區別詳細講解 ----轉載

jQuery中$(function(){})與(function($){})(jQuery)、$(document).ready(function(){})等的區別詳細講解 ----轉載

最大 閉包 param 作用 alt dsm tracking 參數 bsp

1、(function($) {…})(jQuery);

1)、原理:

這實際上是匿名函數,如下:

function(arg){…}
這就定義了一個匿名函數,參數為arg

而調用函數時,是在函數後面寫上括號和實參的,由於操作符的優先級,函數本身也需要用括號,即:
(function(arg){…})(param)
這就相當於定義了一個參數為arg的匿名函數,並且將param作為參數來調用這個匿名函數

而(function($){…})(jquery)則是一樣的,之所以只在形參使用$,是為了不與其他庫沖突,所以實參用jQuery
相當於funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);

2)、作用(非常有用):

這種寫法的最大好處是形成閉包。在(function($) {…})(jQuery)在內部定義的函數和變量只能在此範圍內有效。

形成是否函數函數、私有變量的概念。比如:

[javascript] view plain copy
  1. var i=3;
  2. function init(){
  3. alert("外層init:"+i);
  4. }
  5. (function($) {
  6. var i=2;
  7. function init(){
  8. alert("內層init:"+i);
  9. }
  10. init();
  11. })(jQuery);
  12. init();

執行結果:

內層init:2

外層init:3


2、$(function(){…}); jQuery(function($) {…}); $(document).ready(function(){…})

這三個的作用是一樣的

jQuery中$(function(){})與(function($){})(jQuery)、$(document).ready(function(){})等的區別詳細講解 ----轉載