2017-07-01 95 views
0

您好我正在瀏覽JavaScript中的閉包概念。我發現很難理解它。有人可以幫幫我嗎?在JavaScript中關閉?

function a(name) { 
return function() { 
    console.log("Hello "+ name); 
} 
} 
var b = a("MyName"); 
b(); 

根據封口,內部功能將有權訪問其外部函數的變量外部函數的執行被compeled即使它沒有更多存在於堆棧。有人可以解釋一下,即使在執行外部函數完成後,內部函數如何訪問其變量。我已經嘗試了上面的代碼,它的工作方式如預期,但我很困惑?

+0

請查看https://stackoverflow.com/questions/31735129/how-do-javascript-closures-work-at-a-low-level –

回答

0
function a(name) { 
return function() { 
    console.log("Hello "+ name); 
} 
} 
var b = a("MyName"); 
b(); 

閉包是一個函數和聲明該函數的詞法環境的組合。該環境由創建閉包時在範圍內的任何局部變量組成。在這種情況下,b是對a()運行時返回的內部函數實例的引用。返回函數的實例維護對其詞法環境的引用,其中存在變量名稱。因此,當調用b()時,變量名保持可用,名稱傳遞給控制檯。