閉包及其應用場景
函式外部無法訪問函式內部的區域性變數,但函式內部的函式可以訪問本函式內的區域性變數,故通過閉包實現函式外部訪問函式內部區域性變數。但容易造成記憶體洩漏,應當謹慎使用。
閉包的使用場景:
1】、採用函式引用方式的setTimeout呼叫
setTimeout的第一個引數一般是一個即將要執行的函式,第二個引數是一個延遲時間。
如果一段程式碼想要通過setTimeout來呼叫,那麼它需要傳遞一個函式物件的引用來作為第一個引數,但這個函式物件的引用無法為將要被延遲執行的物件提供引數。此時可以呼叫另一個函式來返回一個內部函式的呼叫,將那個內部函式物件的引用傳遞給setTimeout函式,內部函式執行時需要的引數,在呼叫外部函式時傳遞給它,setTimeout在執行內部函式時無需傳遞引數,因為內部函式仍然能夠防偽外部函式呼叫時提供的引數。
2】、小範圍代替全域性變數
3】、訪問私有變數的特權方法?
特權方法:有權訪問私有變數和私有函式的公有方法
私有變數包括:
1)、區域性變數
2)、函式的引數
3)、函式內部定義的其他函式(閉包)
以上程式碼的建構函式中定義了兩個特權方法:getName()、setName(),這兩個方法可以通過物件訪問,而且都有權訪問私有變數name,但是在Person建構函式外部,沒有任何方法可以訪問name。由於這兩個方法是在函式內部定義的,因此作為閉包能夠通過作用域鏈訪問到name
相關文章
- 閉包及其應用
- 閉包實際場景應用
- 堆排序原理及其應用場景排序
- ios runtime之Method Swizzling及其應用場景iOS
- js閉包及閉包的經典使用場景JS
- React 中的高階元件及其應用場景React元件
- 全雙工與半雙工技術解析及其應用場景
- python閉包 - 理解與應用Python
- 閉包的原理及應用
- 3.4 應用場景
- DDD應用場景
- ES 應用場景
- snapshot應用場景
- Zookeeper應用場景
- Kubernetes的優勢、適應場景及其特點
- 設計模式學習筆記(十七)中介者模式及其應用場景設計模式筆記
- Numpy的應用場景
- openGauss MOT應用場景
- openGauss-應用場景
- Nginx應用場景配置Nginx
- FRAM的應用場景
- SAP BTP MTA 應用的應用場景
- 【分散式】Zookeeper應用場景分散式
- zookeeper使用(四)--應用場景
- 從應用場景看棧
- PON網路應用場景
- 7.3 應用場景簡介
- Redis 應用場景彙總Redis
- 理解 Fragment 的應用場景Fragment
- nodejs實際應用場景NodeJS
- LINQ SelectMany的應用場景
- Redis常見應用場景Redis
- 人工智慧應用場景人工智慧
- 深入理解javascript系列(九):應用閉包JavaScript
- js之閉包(概念、優缺點、應用)JS
- audio 應用:聲波通訊(1)應用場景
- FIBOS DAPP 應用場景詳解APP
- 什麼場景應該用MongoDB ?MongoDB