1. 程式人生 > >javaScript 立即執行函數學習筆記

javaScript 立即執行函數學習筆記

immediate 遞歸 dia sco image 學習 mas 謝謝 初學者

立即執行函數:

即執行函數(Immediate Functions),立即執行函數模式是一種語法,可以讓你的函數在定義後立即被執行

立即執行函數(immediate function)術語不是在ECMAScript標準中定義的,但它很短有助於描述和討論模式;
這種模式有一些幾部分組成:
使用函數表達式定義一個函數(函數聲明不能起作用)
在結尾加上一對括號,讓函數立即被執行
將整個函數包裹在一對括號中(只有在你不將函數賦值給一個變量的時候才需要)(來自百度搜索)

立即執行函數給了一個沙箱裝著函數作用域,且在執行後立即銷毀,訪問不到他的scope,從而不用當心它會汙染全局變量

我們可以寫一個例子,用前幾天寫的遞歸階乘算法來驗證:

 1         <script>
 2             var a = prompt("請輸入值");
 3             var num = (function mul(a) {
 4                 if (a == 1) {
 5                     return 1;
 6                 }
 7                 return a * mul(a - 1);
 8                }(a))
 9             document.write(num);
10 </script>

技術分享圖片

技術分享圖片

正常情況執行這段代碼之後,是可以查詢到mul函數的

技術分享圖片

而使用了立即執行函數之後,查詢結果失敗

技術分享圖片

這是由立即執行函數性質決定的,這也讓mul函數與其內容變量不會汙染到全局變量和方法

所以寫立即執行函數一般也省略方法名。像這樣

var num = (function () {
               }())

但要註意的是,在寫成立即執行函數時,這個函數已經算是表達式了,就如a+b這樣

放在函數體內也就不會直接生效了,而是需要賦值給變量之後才可以使用。

博主是初學者,可能理解上會有錯誤,若有錯誤,求指正,謝謝

javaScript 立即執行函數學習筆記