使用匿名自執行函數的作用: (function(window,document,undefined){})(window,document); 1.首先匿名函數 (function(){}) (); 避免函數體內外變數的衝突(js執行表達式順序為圓括弧里到圓括弧外); 2.後面的圓括弧中(windo ...
使用匿名自執行函數的作用: (function(window,document,undefined){})(window,document);
1.首先匿名函數 (function(){}) (); 避免函數體內外變數的衝突(js執行表達式順序為圓括弧里到圓括弧外);
2.後面的圓括弧中(window,document)的window為實參,接受window對象(window對象是全局環境下的);而function後面的圓括弧function(window,document,undefined){}中的window為局部變數,不是全局的window對象。所以這樣寫可以提高js性能,減少作用域鏈查詢時間.(如果在函數體內多次使用到window對象。把window對象當成實參傳進去,是十分必要的;如果函數內部不需要,那麼就無需傳遞該參數.);
3.function後面的形參undefined又有什麼用呢?其實在一些老的瀏覽器中,undefined不被支持,直接使用會導致錯誤,所以考慮相容性,就增加一個形參undefined;
4.(function() {})()主要用於存放開發插件的代碼,執行其中的代碼時DOM不一定存在,所以直接自動執行DOM操作的代碼,請放心使用;
簡化成()(); 表示匿名函數自執行
(function(window,document,undefined) { //do something console.log("我是匿名函數,會自己執行奧!"); })(window,document);
// (function(){})()------------->匿名函數 沒有賦值給任何變數 無法隨時調用,在定義完成後就會立刻調用 // (事件處理程式,創建閉包,創建函數) //作用:---------->主要利用函數內的變數作用域,避免產生全局變數,影響整體頁面環境,增加代碼的相容性。 (function() { //匿名函數可以訪問外部的變數,而外部環境不能訪問匿名函數內的變數,所以匿名函數定義的變數不會和外部的變數發生衝突,又叫匿名包裹器,具有保護匿名函數內部變數的作用 var cookie = document.cookie; if(cookie.length != 0) { cookie.log('已經登錄,不用再顯示登錄按鈕'); } })();//後面這個()是運行這個匿名函數的意思
總結:待完善,望補充,不是很理解