JavaScript 立即執行函數


 

(function(){ ... }())

(function(){ ... })() 
// 只不過是把函數的引用調用換成了函數本身的調用,然后告訴Javascript引擎,圓括號前面的是函數表達式,而不是申明。
避免Uncaught SyntaxError: Unexpected token
var fn = function(){ ... } fn()

  以上兩種方式是函數自執行的常見方式

JavaScript 立即(自)執行函數:

javascript 里沒有私有作用域的概念,在大型項目里,函數或變量很容易被不小心覆蓋掉,依據JS里作用域鏈(函數外部不能訪問函數內部的變量,函數內部的子函數可以訪問父級作用域的所有變量)的特性。用匿名函數作為一個“容器”,“容器”內部可以訪問外部的變量,而外部環境不能訪問“容器”內部的變量,所以 (function(){ ... })() 內部定義的變量不會和外部的變量發生沖突,俗稱“匿名包裹器”或“命名空間”。

jQuery 使用的就是這種方法,將 jQuery 代碼包裹在 (function(window,undefined){ ...jquery代碼...})(window) 中,在全局作用域中調用 jQuery 代碼時,可以達到保護 jQuery 內部變量的作用

 

匿名函數:使用 function 關鍵字聲明一個函數,但未給函數命名,所以叫匿名函數,匿名函數屬於函數表達式,匿名函數有很多作用,賦予一個變量則創建函數,賦予一個事件則成為事件處理程序或創建閉包

IIFE好處:

一是不必為函數命名,避免了污染全局變量 

二是IIFE內部形成了一個單獨的作用域,可以封裝一些外部無法讀取的私有變量

 

參考鏈接:https://www.jb51.net/article/127527.htm

https://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM