紅寶書上對於閉包的定義:閉包是指有權訪問另一個函數做用域中的變量的函數javascript
關鍵有兩點:java
function createClosure(){
var name = "jack";
return {
setStr:function(){
name = "rose";
},
getStr:function(){
return name + ":hello";
}
}
}
var builder = new createClosure();
builder.setStr();
console.log(builder.getStr()); //rose:hello
複製代碼
上面的函數中返回了兩個閉包,這兩個閉包都維持着對外部做用域的引用。 閉包中會將外部函數的自由對象添加到本身的做用域鏈中,因此能夠經過內部函數訪問外部函數的屬性, 這也是javascript模擬私有變量的一中方式。bash