首頁 >web前端 >js教程 >閉包應用程式場景有哪些

閉包應用程式場景有哪些

hzc
hzc原創
2020-06-28 13:47:138364瀏覽

閉包應用程式場景有:1、採用函數引用方式的setTimeout呼叫;2、小範圍代替全域變數;3、有權存取私有變數和私有函數的公有方法。

閉包應用程式場景有哪些

函數外部無法存取函數內部的局部變量,但函數內部的函數可以存取本函數內的局部變量,故透過閉包實現函數外部訪問函數內部局部變數。但容易造成記憶體洩漏,應謹慎使用。

閉包的使用情境:

1】、採用函數引用方式的setTimeout呼叫

setTimeout的第一個參數一般是一個即將要執行的函數,第二個參數是一個延遲時間。

如果一段程式碼想要透過setTimeout來調用,那麼它需要傳遞一個函數物件的參考來作為第一個參數,但這個函數物件的參考無法為將要延遲執行的物件提供參數。此時可以呼叫另一個函數來傳回一個內部函數的調用,將那個內部函數物件的參考傳遞給setTimeout函數,內部函數執行時需要的參數,在呼叫外部函數時傳遞給它,setTimeout在執行內部函數時無需傳遞參數,因為內部函數仍然能夠防偽外部函數呼叫時提供的參數。

閉包應用程式場景有哪些

2】、小範圍取代全域變數

閉包應用程式場景有哪些

3】、存取私有變數的特權方法?

特權方法:有權存取私有變數和私有函數的公有方法

私有變數包含:

       1)、局部變數

2)、函數的參數

       3)、函數內部定義的其他函數(閉包)

閉包應用程式場景有哪些

以上程式碼的建構函數中定義了兩個特權方法:getName()、setName(),這兩個方法可以透過物件訪問,而且都有權利存取私有變數name,但是在Person建構函式外部,沒有任何方法可以存取name。由於這兩個方法是在函數內部定義的,因此作為閉包能夠透過作用域鏈存取到name

推薦教程:《JS教程

以上是閉包應用程式場景有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn