Loop 안의 클로저(Closure) - Closure in loop
- 클로저는 loop 문 안에서 문제를 일으킨다
1. 문제
1) 예 1
- 실행 결과 : 5 5 5 5 5
- 예상과는 다른 결과가 출력되었다
- 원인
- 클로저는 생성될 때 각자의 환경을 가진다, 그러나 위와 같은 경우 내부 함수가 생성되면서 하나의 환경을 공유한다, 그러므로 최종 결과인 5를 공유하여 배열에 5만 저장되었다
2. 해결
- 밖에 외부 함수를 선언한다
- 배열의 외부함수의 return 값을 넣는다
- 내부함수의 변수가 외부 함수의 인자값을 지정
- 클로저가 생성될 때 마다 각각의 환경을 부여 받는다
'Javascript > Core' 카테고리의 다른 글
[Javascript] 자바스크립트 유효범위(Scope) 와 유효범위 체인(Scope chain) (0) | 2016.12.09 |
---|---|
[Javascript] 자바스크립트의 상속 prototype (0) | 2016.12.09 |
[Javascript] 자바스크립트의 Prototype(프로토타입) (0) | 2016.12.08 |
[Javascript] 클로저를 이용한 private 메소드 - Emulating private methods using closures (0) | 2016.12.07 |
[Javascript] 클로저(Closure) (0) | 2016.12.07 |