使用匿名自執行函式的作用: (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('已經登錄,不用再顯示登錄按鈕'); } })();//后面這個()是運行這個匿名函式的意思
總結:待完善,望補充,不是很理解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/180434.html
標籤:JavaScript
上一篇:關于阮一峰老師es6(第三版)中管道機制代碼的理解淺析
下一篇:vue創建組件的幾種方法
