티스토리 뷰

반응형

클로저(Closure)는 어떤 함수가 함수의 외부에서 선언된 변수에 접근하는 것을 말한다.

 

 

 

 

아래와 같이 for 문에서 var을 사용해보자. i가 4가 되면 false가 되어 for 문을 나온다. 콜백 함수(클릭 이벤트가 발생한 뒤의 동작을 정한 함수)는 나중에 실행된다. 콜백 함수 영역 밖에 있는 변수 i를 계속 참조하면서 기억해둔다. 그게 4이기 때문에 콜백 함수가 실행될 때 결괏값이 계속 4가 나오는 것이다.

여기에서 i는 클로저 변수라고 할 수 있다.

 

See the Pen Untitled by cw (@fromnowwon) on CodePen.

 

 

 

반면에 for 문에서 let을 사용하면 어떻게 될까? let은 블록 스코프이다. 때문에 for 문 밖으로 나온 변수 i와 상호작용하지 않는다. 따라서 클릭한 칸의 i값 대로 올바르게 출력된다. 블록 안에 있는 변수 i는 블록 밖에서 출력할 수 없다. i를 블록 밖에서 출력하면 오류가 뜬다. 

 

See the Pen for 문에서 let by cw (@fromnowwon) on CodePen.

 

 

 

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31