參考https://tylermcginnis.com/async-javascript-from-callbacks-to-promises-to-async-await/
閉包定義-是指有權訪問另一個函式作用域中的變數的函式,
讓這些變數的值始終保持在記憶體中,
閉包就是能夠讀取其他函式內部變數(區域變數)的函式
使用場景——函式作為回傳值,函式作為引數傳遞,
回傳值

引數傳遞

上面的寫法其實是最原始的寫法,而在實際應用中,會將閉包和匿名函式聯系在一起使用
形成閉包要符合這三個條件,而且三者缺一不可:
- 1、函式A內部直接或間接回傳一個函式B
- 2、B函式內部使用著A函式的私有變數
- 3、A函式外部有一個變數接收B函式
閉包主要的三個特點
- 1、延長了變數的生命周期;這個特點的好處就是變數會一直存在,
- 因此也成了一個致命的缺點:就是這個函式的執行空間不會被銷毀,而當一段記憶體空間中有一個不會被銷毀的東西一直存在,就會出現記憶體占用,如果過多的話,還會導致記憶體溢位,結果引起記憶體泄漏,
- 2、可以訪問函式內部的私有變數;利用這個特點,我們可以在函式外部訪問到內部的資料,
- 3、保護私有變數;這是所有函式都具備的特點之一,普通函式的內部變數是不能在外部訪問的,但是閉包空間可以,
匿名函式主要有兩種常用的場景,一是回呼函式,二是直接執行函式,
()()這種寫法可以說是匿名函式的呼叫或者叫立即執行函式,<script language="javascript"> var a = "a"; (function(){ var a="b"; alert(a); })(); alert(a); </script>
Function 物件是JavaScript 里面的固有物件,所有的函式實際上都是一個Function 物件,
var abc = new Function("x","y","return x*y;"); alert(abc(2,3)); // "6"
宣告匿名函式---匿名函式就是沒有實際名字的函式,
var abc=function(x,y){
return x+y;
}
alert(abc(2,3)); // "5"
立即執行函式:形如 (function(){})();的一類函式;
立即執行函式的兩種寫法
- (function(){}()); W3C 建議第一種
- (function(){})();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/167603.html
標籤:其他
上一篇:關于URL
下一篇:JavaScript執行機制淺談
