一、(function($) {…})(jQuery);javascript
1)、原理:java
這其實是匿名函數,以下:閉包
function(arg){…}
這就定義了一個匿名函數,參數爲arg函數
而調用函數時,是在函數後面寫上括號和實參的,因爲操做符的優先級,函數自己也須要用括號,即:
(function(arg){…})(param)
這就至關於定義了一個參數爲arg的匿名函數,而且將param做爲實參來調用這個匿名函數spa
而(function($){…})(jQuery)則是同樣的,之因此只在形參使用$,是爲了避免與其餘庫衝突,因此實參用jQuery
至關於funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);.net
2)、做用(很是有用):blog
這種寫法的最大好處是造成閉包。在(function($) {…})(jQuery)在內部定義的函數和變量只能在此範圍內有效。ip
造成是否函數函數、私有變量的概念。好比:文檔
[javascript] view plain copyget
var i=3;
function init(){
alert("外層init:"+i);
}
(function($) {
var i=2;
function init(){
alert("內層init:"+i);
}
init();
})(jQuery);
init();
執行結果:
內層init:2
外層init:3
二、$(function(){…}); jQuery(function($) {…}); $(document).ready(function(){…})
這三個的做用是同樣的,本人比較須要用第一種、書寫簡單。
文檔載入完成後執行的函數。