closure란 내부함수가 외부함수의 Context에 접근할 수 있는 것이다


즉 클레스의 멤버처럼 쓸수 있는 것인데, 말로써 설명은 잘 못하겠고 예제를 참조하자.


예제 1)

(function() {
var nData = 10;

var testFunction = function() {
console.log(nData); // nData값을 참조한다.
};

testFunction(); // console에 10이 찍힌다.
})();


예제처럼 testFunction 안에서 nData를 참조했고 console 출력을 했다.


여기서 주의 점이 하나 있는데 함수 실행시점 값을 참조한다는 것이다.


또 말보단 예제로 .


예제2)


(function() {

var nData = 10;


var testFunction = function() {
console.log(nData); // nData값을 참조한다.
};

// 여기까진 nData가 10
testFunction(); // console에 100 이 찍힌다.

nData = 100;
// 여기서부터 nData가 100
testFunction(); // console에 100 이 찍힌다.

})();


주의

예제 2)같이 10을 원했는데 100이 나오는 실수가 많이 발생한다고 한다.

+ Recent posts