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이 나오는 실수가 많이 발생한다고 한다.
'Dev > JavaScript' 카테고리의 다른 글
[Nestjs] transform.interceptor 를 Global로 사용시. (0) | 2023.01.06 |
---|---|
[Nestjs] 개발 시작 전 알아두어야 할 것? (0) | 2023.01.03 |
requestAnimationFrame 가 호출이 안될때가 있다. (0) | 2017.01.17 |
Memory leak patterns in JavaScript (0) | 2012.08.20 |
Google Chart Tools, 빠르고 다이나믹한 차트 생성 (0) | 2012.07.15 |
HTML5 API 강좌 #3 – 아이폰 Web App 만들기 (0) | 2012.04.23 |
HTML5 API 강좌 #2 – Web SQL Database 와 GeoLocation (0) | 2012.04.23 |
파일이름 관련 함수 (0) | 2012.03.27 |