인프런 커뮤니티 질문&답변

블루윤님의 프로필 이미지
블루윤

작성한 질문수

웹 게임을 만들며 배우는 자바스크립트

카드 색 부여하기

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

해결된 질문

작성

·

331

1

04:12 에 보믄...

forEach 도 배열의 반복문이고

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

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

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

==========

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

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

특별한건가요?

답변 4

0

블루윤님의 프로필 이미지
블루윤
질문자

네 const 로 다시 생각하니 

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

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

0

블루윤님의 프로필 이미지
블루윤
질문자

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

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

블루윤님의 프로필 이미지
블루윤

작성한 질문수

질문하기