一、1、我們探究這個問題的時候如果按照正常的思維順序,需要知道閉包是什么它是什么意思,但是這樣做會讓我們很困惑,了解這個問題我們需要知道它的來源,就是我們為什么要使用閉包,先不管它是什么意思!
2、我們使用閉包是因為js的作用域問題,前面我們已經對作用域了解了一些,在函數中,外部不能讀取到內部的變量,而內部可以讀取到外部的變量,這其實也是js特殊的一個地方!(這個特殊其實是因為函數的作用域是一條作用域鏈,而且作用域鏈是有順序的,我們稱之為鏈式作用域結構!)那么問題來了,如果我們想要從函數外部讀取到局部的變量呢,那么閉包也就應運而生了!
3、我們來舉一個例子:

4、到這里我們就可以研究什么是閉包了,簡單一句話:閉包就是能夠讀取其它函數內部變量的函數!本質上的閉包:就是函數外部和函數內部連接的橋梁!
我們可以再深入一步的了解閉包,舉例:

二、我們可以再深入一步,舉例:
閉包中函數如果有參數怎么辦?它會怎么傳遞?

