2013-01-21 39 views
0

我有jQuery代碼塊如下;jQuery參數與參數的區別

(function($){ 
    //Normal code goes here 
})(jQuery); 

現在我想了解

  1. 如果這是一個自動執行的功能?如果是,爲什麼?
  2. 傳遞給函數的「$」和最後指定的「jQuery」有什麼區別?其中一個叫做參數而另一個參數?
  3. 是否有必要在最後指定「jQuery」。

謝謝。

回答

1

是的,這是「自我執行」。內部部分是一個「函數表達式」,並且(必要的)參數然後使其立即被調用,因此是「立即調用的函數表達式」的更常用術語。

變量$是函數的局部範圍。 jQuery插件通常以這種方式編寫,因此即使jQuery處於「無衝突」模式,也可以在內部使用常用的縮寫,因爲(全局)$變量正在被別的東西使用。

形式上聲明中的變量稱爲「參數」,調用中的變量稱爲「參數」。我認爲在JS中會產生歧義,因爲您可以使用僞數組訪問所提供的參數。

3

如果這是一個自動執行功能?如果是,爲什麼?

是和否。這是一個Immediately-Invoked Function Expression,但有些人傾向於稱這些「自我執行」,即使這通常與遞歸的想法有關。

傳遞給函數的「$」和最後指定的「jQuery」之間有什麼區別?其中一個叫做參數而另一個參數?

沒錯。

是否有必要在最後指定「jQuery」。

否則從哪裏輸入$參數?


我會添加你似乎已經錯過了一個問題:

爲什麼使用立即調用的函數表達式?

它只是別名jQuery$的IIFE範圍內,因此您可以放心地單獨使用jQuery的$noConflict模式或不是的。對於開發插件和使用WP非常有用。

+0

「*否則從$參數將被填充的位置?*」。雖然我同意'$'和'jquery'之間的區別是參數和參數之間的區別,我會調用'$'參數和'jquery'參數。 – Bruno

+0

@布魯諾我不好,剛起牀。你是對的 - 'jQuery'作爲形式參數輸入函數。 –

0

1)自動執行,並立即執行的

你可以告訴,因爲它有在末尾括號。

你寫這樣的功能:

function myFunc() {} 

或類似

var myFunc = function() {}; 

你調用像一個函數:

myFunc(); 

你把它寫爲(function() {})();,因此觸發只要它結束。

2)的參數是一個函數需要什麼。 參數是你給一個函數。

var number_arg = 35, 
    string_arg = "Bob"; 

function myFunc (number_param, string_param) { 
    console.log(number_param, string_param); 
} 

myFunc(number_arg, string_arg); // 35 "Bob"; 

是PARAMS可以從不同的參數來命名,這意味着你可以在「別名」值不同的函數中。

function myFunc ($) { console.log($); } 

myFunc("SUPERLONGSTRINGOFDOOMISWHATI'MPUTTINGINHERE"); 

myFunc(MYAPP.Module.sub_module.plug_in); 

同時,在函數內部,所有這些東西都可以一起工作,只用$

3)「別名」是jQuery$之間的關係。

相關問題