函數(shù)里面再定義一個函數(shù),內(nèi)部函數(shù)可以訪問外部函數(shù)作用域的變量。如果外部函數(shù)不暴露這個內(nèi)部函數(shù)的話,外界就不知道這個內(nèi)部函數(shù)。
這個內(nèi)部函數(shù)和函數(shù)所能訪問的變量(也叫環(huán)境)的總和被稱為閉包。
閉包常常用來隱藏變量,給內(nèi)部函數(shù)的變量設置里只讀屬性,外部只能返回他的值,而不能修改他的值,從而起到了保護作用。
這邊文章解釋的非常清楚
「每日一題」JS 中的閉包是什么? - 方應杭的文章 - 知乎
https://zhuanlan.zhihu.com/p/22486908