當function裏嵌套function時,內部的function能夠訪問外部function裏的變量。html
先來講些,介紹些閉包的用處:就是爲了不內存泄露而存在的,閉包重點(或者意義)就是理解js的做用域;web
1.緩存
2.面向對象中的對象
3.實現封裝,防止變量跑到外層做用域中,發生命名衝突
4.匿名自執行函數,匿名自執行函數能夠減少內存消耗.編程
但個人觀點依然是:緩存
不要刻意避免使用閉包,但也不該該非要閉包。按代碼設計來,按編程節奏來
function foo(x) { 閉包
var tmp = 3;app
function bar(y) {函數
alert(x + y + (++tmp)); spa
} 設計
bar(10); orm
}
foo(2);
上面三行代碼在一個當即執行函數中。
三行代碼中,有一個局部變量 local,有一個函數 foo,foo 裏面能夠訪問到 local 變量。
好了這就是一個閉包:
「函數」和「函數內部能訪問到的變量」(也叫環境)的總和,就是一個閉包。
就這麼簡單。
若是還不夠了解,能夠去看推薦網址。