자바 스크립트의 모듈 패턴을 배우고 있습니다. 아래는 "바구니"모듈의 예입니다.JS 모듈 패턴 - 개인 변수가 삭제되지 않는 이유
나는이 함수가 실행되는 익명의 함수라는 것을 알고 있기 때문에, 그 변수 안에있는 변수에 액세스 할 수 없다는 것을 알 수 있다고 생각한다. 익명 함수의 실행이 끝난 후에이 함수 내의 변수와 함수가 삭제되거나 가비지 수집되지 않는 이유는 무엇입니까? JS는 나중에 사용할 수 있도록 메모리에 보관하는 것을 어떻게 알습니까? 우리가 그들을 액세스 할 수있는 함수를 반환했기 때문입니까?
var basketModule = (function() {
// privates
var basket = [];
function doSomethingPrivate() {
//...
}
function doSomethingElsePrivate() {
//...
}
// Return an object exposed to the public
return {
// Add items to our basket
addItem: function(values) {
basket.push(values);
},
// Get the count of items in the basket
getItemCount: function() {
return basket.length;
},
// Public alias to a private function
doSomething: doSomethingPrivate,
// Get the total value of items in the basket
getTotal: function() {
var q = this.getItemCount(),
p = 0;
while (q--) {
p += basket[q].price;
}
return p;
}
};
})();
http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – Jack