javaScript 立即執行函數學習筆記
阿新 • • 發佈:2019-02-02
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 立即執行函數學習筆記