inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

로또 당첨기 콜백함수 관련 질문

204

YJ Ginter

작성한 질문수 1

0

for (var i = 0; i < 당첨숫자들.length; i++) {

  (function 클로저(j) {
  // var j = i;
  setTimeout(function () {
  공색칠하기(당첨숫자들[j], 결과창);
  }, (j + 1) * 1000);
  })(i);
  }

 

setTimeout( 공색칠하기(당첨숫자들[j], 결과창),  ( j + 1) * 1000);  << 이렇게 하면 왜 안 되는 건가요? 

setTimeout 함수 안에 또 익명 함수를 선언하여 콜백함수를 만들어야 되는 이유가 궁금해요.

클로저 문제때문에 function 클로저를 선언하여 함수로 감싸는 건 이해가 되는데 setTimeout 안에 콜백함수를 

또 함수로 감싸야 하는 이유가 궁금합니다. 이 부분이 이해가 안돼서 아무리 온라인에서 찾아봐도 이해가 안 되더라구요 ㅠㅠ

지뢰찾기 강의도 듣고 클로저 강의도 들었는데 잘 이해가 안 돼서요 ㅠㅠ 

 

답변해주시면 감사하겠습니다. 

javascript

답변 2

1

제로초(조현영)

공색칠하기(당첨숫자들[j], 결과창) 이렇게 하는 순간, 함수 호출이기 때문 바로 실행되어 버립니다(setTimeout보다도 전에). 그래서 실행되지 않은 함수로 감싸주는 것입니다. 그 함수가 호출되면서 내부의 공색칠하기(당첨숫자들[j], 결과창)도 실행되게끔요.

 

a(b())와

a(function b() {})는 완전 다른 겁니다.

0

YJ Ginter

답변 너무 감사합니다! 강의 잘 듣고 있어요! 그냥 문법만 따라하는 강의가 아니라 프로그래밍적 사고도 해 줄수 있게 해줘서 강의가 맘에 들어요 ^^ 

iput 입력글자 제한에러...

0

228

0

리팩토링 관련 질문입니다. (자스스톤)

0

277

1

카드 짝맞추기 react-native

0

342

0

필터 메소드 관련 질문입니다.

0

340

1

가위바위보 게임 질문드립니다~

0

205

1

자바스크립트 기초에 관해서 질문있습니다.

0

210

1

질문입니다.

1

360

1

이벤트 리스너 안에서 동작 질문드립니다.

0

328

2

질문드립니다.

0

192

0

안녕하세요 깊은 복사 부분에서 질문 있습니다.

0

246

1

document.createElement('')함수에서

0

251

2

안녕하세요 클로저 부분에서 질문 있습니다.

0

281

1

안녕하세요 제로초님

0

741

1

끝말잇기 화면에 출력 반복문을 이용해서 횟수 제한

0

247

1

안녕하세요 제로초님 질문있습니다

0

319

1

안녕하세요 강의 정말 잘시청하고있습니다.

0

278

3

?

0

154

1

틱택토 게임에서 게임이 끝나고

0

568

1

9 곱하는게 이해가 안 되요~

0

175

1

지뢰찾기 에러잡아내기에서 질문있습니다!

0

463

4

지뢰찾기 에러 관련 질문!

0

486

3

리팩토링에 관한 질문입니다.

0

246

2

Array/Object spread

0

206

1

지뢰찾기게임에서 Math.random() 질문

0

225

1