inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

281

김현종

작성한 질문수 5

0

코드

function one() {
  for (var i = 0; i < 3; i++) {
    setTimeout(function () {
      console.log(i);
    }, i * i * 100);
  }
}

function two() {
  for (var i = 0; i < 3; i++) {
    closure(i);
  }
}

function closure(i) {
  setTimeout(() => {
    console.log(i);
  }, i * i * 100);
};

one();
two();

생각한 실행 결과

3 3 3 0 1 2

실제 결과

3 0 3 1 3 2

이렇게 나오는데 혹시 생각한 실행 결과처럼 나오게 하려면 어떻게 할 수 있나요?

자바스크립트 javascript 클로저 비동기

답변 1

1

제로초(조현영)

i*i*100의 i에 0 1 2를 각각 넣어보시면 왜 타이밍이 그렇게 나오는지 아실 수 있습니다.

0

김현종

그렇다면 one과 two를 실행했을때 생각한 실행 결과가 나오게 하려면 시간초를 다르게 하는 수밖에 없는 건가요?

0

제로초(조현영)

네 setTimeout은 단순히 정해진 시간초 뒤에 콘솔을 표시해주는 것이라서 정해진 시간초를 바꿔주어야 합니다.

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

0

230

0

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

0

277

1

카드 짝맞추기 react-native

0

342

0

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

0

342

1

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

0

205

1

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

0

210

1

질문입니다.

1

361

1

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

0

328

2

질문드립니다.

0

192

0

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

0

246

1

document.createElement('')함수에서

0

252

2

안녕하세요 제로초님

0

744

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

247

2

Array/Object spread

0

206

1

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

0

225

1

질문있습니다!

0

243

1