自呼叫匿名函式和js的Module模式

2022-06-02 18:57:08 字數 965 閱讀 5533

編寫自呼叫匿名函式的結構一般如下:

;(function( window, undefined ) )(window);

傳入的引數window,和引數列表中的undefined怎麼解釋?

1、傳入的引數window

把全域性的window物件傳進去,把全域性的變數變成區域性變數,避免了函式裡面執行時候,不需要將作用域鏈退到頂層作用域,到外面去尋找window,可以提高效率。假如函式裡面用到很對window的物件,這樣函式要不停的去外面尋找。

還有一點,在壓縮**的時候,window作為引數可以壓縮成一些識別符號。

2、引數列表中的undefined

在匿名函式的作用域內,確保undefined是真的未定義。

就算外面undefined被定義了,也不會影響函式內部的。這就最大程度防止外界的變數定義對所做封裝的內部造成影響。

3、其他

$(function())的簡寫。

4、module模式

特點:1、模組化,可重用

2、封裝了變數和function,和全域性的命名空間不接觸,松耦合

3、只暴露可用public的方法,其它私有方法全部隱藏

// 建立乙個立即呼叫的匿名函式表示式

// return乙個物件,物件中你要暴露的東西

// 返回這個變數將賦值給counter

var counter = (function(),

set:function(val),

increment:function()

}}())

console.log(counter.get()); //10

counter.set(100);

console.log(counter.increment()) //101

js函式的宣告及自呼叫

在js中函式通常擁有兩種命名方式 1.函式宣告 function a,b,c.函式宣告必須以function欄位開頭,是該函式的函式名,小括號中的a,b,c是該函式引用的引數,大括號中是該函式的具體方法。使用函式宣告的函式會提公升其優先度,因此我們可以在同一作用域的任何區域宣告,不會影響我們使用。2...

js函式實現遞迴自呼叫的方法

1.通過函式自身名字遞迴呼叫 function sum num else console.log sum 5 15 這種通過函式名字呼叫自身的方式存在乙個問題 函式的名字是乙個指向函式物件的指標,如果我們把函式的名字與函式物件本身的指向關係斷開,這種方式執行時將出現錯誤。2.通過arguments....

js閉包和函式自調

js沒有c 中class的public和private的區分 es5中 只有全域性變數和區域性變數這兩種,引入閉包就使得js有了私有變數這一概念。下面給出閉包的定義 閉包 是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的最常見的方式就是在乙個函式內建立另乙個函式,通過另乙個函式訪問這個函式的區...