歡迎回來。
在這段視頻中，我們要談論關閉。
閉包是更具挑戰性的概念來包裝你的頭周圍之一。
但是，一旦你真正了解的定義是，我已經看到他們夫婦這將是一個容易得多。
那麼，什麼是我們要在這個視頻做。
我們要了解什麼是封閉的，哪些不是。
我們將使用閉包來模擬私有變量。
我們將列出一些用例在現實世界中倒閉。
那麼什麼是關閉。
閉包是一個函數，利用在先前返回外函數定義的變量。
所以我知道該定義可能沒有太大的意義現在。
所以，讓我們一個例子看看的時候了。
我會按命令選項周杰倫，打開了我的Chrome開發工具。
現在，如果我們說，一個閉包是一個函數，利用了我們的函數中定義的變量那麼就讓我們做一個外的功能。
所以，我會做一個調用此函數amik一個變量稱為數據等於字符串的內外部功能。
封是外部函數的內部。
我將返​​回一個名為這種內在的功能和內內的新功能或進行所謂的內部數據和內部數據變量等於字符串。
真棒。
現在，這個內部函數裡面我將返回字符串閉包是用字符串。
真棒。
現在讓我們來調用這個外部函數。
而且它應該回到我們的身邊。
那麼它將會返回內部函數的定義。
但這裡要注意，我利用這是在外部函數中定義的變量稱為數據的這種內在功能裡面。
所以，當我把這種外部函數和我所說的內部函數馬上返回字符串。
閉包是真棒。
所以，你可能沒有真正看到關閉的權力，但現在這是使用外部函數定義這樣的數據變量在這裡的內部函數內部變量只是一個很好的例子。
當外部函數已經返回通知這裡返回外部函數，但我仍然可以使用，即使外部函數已經返回該數據變量。
讓我們來看看另一個例子。
在這裡我我有一個叫做外部函數，它在參數A和它返回一個名為Inner的函數，它接受一個參數b。
內部功能是利用其在外部函數和由它調用的外部函數返回時定義的變量A的。
所以這個函數內部是一個封閉就像我們看到了幾件事情，這裡要注意的另一個例子。
我們必須回到這個工作，我們也有調用外部函數，然後立即調用內部函數或存儲在一個變量的內部函數的結果，後來稱之為我們通常做的能力，內部函數。
讓我們試著快速運動。
看看你是否能找出如果這些功能包含第二封閉拼圖視頻。
好吧你是怎麼想出這個第一個函數。
我們可以看到，內部功能未利用任何變量在返回該外函數查找。
所以這一塊就在這裡不包含在第二個例子中的閉包。
我們可以看到，內在功能是利用其在已經由內部函數將被調用時返回外部函數中定義的變量稱為數據。
所以第一個不是但第二個總是要回到封閉的定義。
如果你看到內部函數未在外部函數利用變量它可能不是一個封閉。
所以，你什麼時候會使用閉包。
好一個偉大的用例倒閉是建立在其他語言中一個私有變量的想法。
存在變量不能被外部修改，我們稱之為私有變量，但在JavaScript中，我們沒有這樣的內置支持。
值得慶幸的是封閉可以幫助我們了這一點。
因此，讓我們在新聞命令選項賈根看看這個例子中的Chrome瀏覽器開發工具，並打開了，我打算寫一個函數調用計數器，這個計數器功能的內部。
我要做一個變量，名為計數，以便等於零，並且這裡面計數器功能我將返回一個新的功能。
沒有通知就在這裡，我不是給這個函數的名稱。
這是因為這些功能是匿名的。
所以，如果我想命名這個功能，我可以把這個像計數，但我不需要。
而這個內部函數裡面我要回加算加。
而且，我做加加上這裡作為一個前綴操作符的原因是為了讓第一次，我把它稱為它上升到1。
現在我可以設置這個計數器功能等於一個名為C變量，我會救R C等於計數器。
現在，你是什麼認為C將是，當我看看吧。
那麼就像我們之前看到的。
這將是一個函數的定義，如果我調用C再次我要返回加1計數。
讓我們一次又一次地調用它。
但是，什麼是真的很好這個是沒有人可以訪問變量計數，我在現在正範圍。
如果我嘗試訪問計數我要得到一個參考是說沒有定義計數。
而且，由於計數是一個私有變量沒有人能進來，並與計數值在它開始總是會為零改變。
暫停視頻，並嘗試在Chrome控制台來複製這個例子。
這將幫助了很多與理解閉包是如何工作的。
讓我們來看看這個教室函數內的私有變量的另一個例子。
我有一個變量稱為導師是被稱為LP兩個字符串數組。
這樣的課堂函數返回兩個函數的對象。
獲得導師和講師得到導師允許我只是顯示在教練雜亂是一個函數，它接受一個參數，並把它添加到老師的數組。
那麼，有沒有封怎麼回事。
好吧注意到GET教官一個附加功能教官。
它們都利用這個老師的變量是這裡這個功能，在這裡這個功能之外。
因此，這兩個函數得到導師和講師添加使用在已經返回外部函數定義的變量。
你可以看到在這裡他們得到教練讓我打印出來埃倫小馬的陣列和教練讓我的教練添加到該數組，並返回理論。
但是，當我創建另一個變量一個新的教室，我得到了教官，我們可以看到，伊恩是不是在這裡。
最後，通過採用封閉我們所做的教官變量在這裡的私有變量。
沒有人能夠隨時使修改它，一個教室創建教官，你得到總是會被稱為胡同。
所以它看起來像你堅持跟我們一小會兒所以儘管我們這裡有一個小例子有很多工具和技術，你將學習使用倒閉了不少。
所以，當你正在尋找一些代碼，盡你所能，看看你能發現那些在哪裡都關閉。
那麼一定要指出來你。
那麼，我們學習。
當一個內部功能使用的它已經返回和關閉不存在外函數聲明的變量封存在。
如果不返回一個內部函數，如果該內部函數不使用由外部函數返回的變量，我們也看到了，我們可以使用閉包來創建私有變量和編寫更好的代碼隔離我們的邏輯和我們的應用程序。
這就是它的閉包。