04:12 forEach 내 클로저 질문 드립니다.

20.11.12 13:16 작성 조회수 237

1

04:12 에 보믄...

forEach 도 배열의 반복문이고

반복문안에 비동기가 실행되니

비동기 함수 내부의 e 가 마지막 이벤트타겟만을 바라보고 작동해야할 것같은데요.

실제로는 정상적으로 작동을 하네요.

==========

forEach 로 돌아가는 반복은 특별하게....

자동(??)으로 클로저 개념으로, 비동기함수내 e 변수가 외부변수 e 를 기억하는건가요?

특별한건가요?

답변 4

·

답변을 작성해보세요.

0

블루윤님의 프로필

블루윤

질문자

2020.11.30

네 const 로 다시 생각하니 

for 랑 forEach 랑 작동방식이 아예 다르더군요... 어렵습니다 ㅜ

0

for과 var(함수 스코프) + 비동기 조합만 클로저 문제가 발생합니다. forEach는 함수가 들어있어서 클로저 문제가 발생하지 않습니다.

0

블루윤님의 프로필

블루윤

질문자

2020.11.13

으흠... 그렇군요. 정확하게 타겟이 정해져있다. 감사합니다

0

forEach의 처음부터 card와 index는 정확하게 타겟이 정해져있습니다. for문에서 var i는 반복문을 다 돌고나면 마지막 값 + 1이 되어버립니다. 따라서 for문에서 cards[i] 하거나 하면 문제가 생기는 것입니다.