javascript自執行函數

定義

當即執行函數模式是一種語法,可讓你的函數在定義後當即被執行,
這種模式本質上就是函數表達式(命名的或者匿名的),在建立後當即執行;
當即執行函數(immediate function)術語不是在ECMAScript標準中定義的,但它很短有助於描述和討論模式;
這種模式有一些幾部分組成:javascript

  • 使用函數表達式定義一個函數(函數聲明不能起做用)java

  • 在結尾加上一對括號,讓函數當即被執行git

  • 將整個函數包裹在一對括號中(只有在你不將函數賦值給一個變量的時候才須要)web

功能

  • 它能夠幫你封裝大量的工做而不會在背後遺留任何全局變量。函數

  • 你定義的全部變量都會成員當即執行函數的局部變量,因此你不用擔憂這些臨時變量會污染全局空間測試

  • 可使用這種技術能夠模仿一個私有做用域,用匿名函數做爲一個「容器」,「容器」內部能夠訪問外部的變量,而外部環境不能訪問「容器」內部的變量code

  • 能夠添加更多的增強模塊,移除它們,單獨測試它們,容許用戶去禁用它們等等
    爲何要有js當即執行函數,存在的意義是什麼ip

注意點

當即執行函數一般做爲一個單獨模塊使用。通常沒有問題,可是,建議在本身寫的當即執行函數前加分號,這樣能夠有效地與前面代碼進行隔離。不然,可能出現意想不到的錯誤。
js自執行函數前加個分號是什麼意思?作用域

寫法

  1. 最前最後加括號get

    (function(){alert(1);}());

    JSLINT推薦這種寫法

  2. function外面加括號

    (function(){alert(1);})();

    目前不少比較好的js library 使用的都是第二種方式。
    好比: web 圖形繪製的: git , draw2d ,....

  3. function前面加運算符,常見的是!與void

    !function(){alert(1);}(); 
    void function(){alert(2);}();

    在function前面加!、+、 -甚至是逗號等到均可以起到函數定義後當即執行的效果,而()、!、+、-、=等運算符,都將函數聲明轉換成函數表達式,消除了javascript引擎識別函數表達式和函數聲明的歧義
    js中當即執行函數

相關文章
相關標籤/搜索