donaricano-btn

Loop 안의 클로저(Closure) - Closure in loop

- 클로저는 loop 문 안에서 문제를 일으킨다


1. 문제

1) 예 1


- 실행 결과 : 5 5 5 5 5

- 예상과는 다른 결과가 출력되었다

- 원인 

- 클로저는 생성될 때 각자의 환경을 가진다, 그러나 위와 같은 경우 내부 함수가 생성되면서 하나의 환경을 공유한다, 그러므로 최종 결과인 5를 공유하여 배열에 5만 저장되었다


2. 해결

 

- 밖에 외부 함수를 선언한다

- 배열의 외부함수의 return 값을 넣는다

- 내부함수의 변수가 외부 함수의 인자값을 지정

- 클로저가 생성될 때 마다 각각의 환경을 부여 받는다


블로그 이미지

리딩리드

,