inflearn logo
강의

Course

Instructor

Want to learn JavaScript properly?

window 객체 질문 있습니다.

223

작성자 없음

0 asked

0

clearInterval은 setInterval을 중단하는 내장 함수입니다.

아래 setInterval를 i 가 3일 때 clearInterval 함수를 삽입하여 중단하기 위해서

   var i = 0;
      var fnc = setInterval(function () {
        console.log("3초마다 프로그램 실행 - " + i);
        i++;
      }, 3000);

 

 var i = 0;
      var fnc = setInterval(function () {
        if (i == 3) {
          clearInterval(fnc);
        }
        console.log("3초마다 프로그램 실행 - " + i);
        i++;
      }, 3000);

위와 같이 작성을 했습니다.

i가 3일 경우에는 clearInterval에 의해 setInterval이 중단됐기 때문에

아래 console.log("3초마다 프로그램 실행 - " + i)도 실행되지 않아

콘솔창을 실행했을 때 "3초마다 프로그램 실행 - 2"까지만 나오고 멈출거라고 생각했는데,

"3초마다 프로그램 실행 - 3"이 나와 왜 그런지 질문 드립니다..!

HTML/CSS javascript es6

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
라따뚜이님, 문의하신 setIntervalclearInterval에 관한 질문에 대해 답변 드리겠습니다.

setInterval 함수는 지정된 시간 간격으로 코드를 반복적으로 실행하도록 예약합니다. clearInterval 함수는 setInterval에 의해 설정된 반복 실행을 중지합니다.

제시해 주신 코드에서 i가 3이 되는 순간에 clearInterval(fnc);가 호출되어 setInterval이 중단됩니다. 그러나 clearInterval이 호출되는 시점에 이미 console.log("3초마다 프로그램 실행 - " + i);가 실행된 상태이기 때문에 “3초마다 프로그램 실행 - 3”이 출력됩니다.

즉, if문이 true로 평가되는 순간에 clearInterval(fnc);는 실행되지만, 그 이전의 console.log문은 이미 실행 큐에 들어간 상태이므로 “3초마다 프로그램 실행 - 3”이 콘솔에 출력되고 그 후에 다음 setInterval 호출이 중단됩니다.

따라서, “3초마다 프로그램 실행” 로그가 “2”까지만 출력되기를 원하신다면 clearInterval(fnc);console.log문 위로 올려서 i가 3일 때 console.log가 실행되기 전에 타이머를 중지하게 해야 합니다. 아래와 같이 수정하면 됩니다:

 var i = 0;
      var fnc = setInterval(function () {
        if (i == 3) {
          clearInterval(fnc);
        }
        console.log("3초마다 프로그램 실행 - " + i);
        i++;
      }, 3000);

이렇게 수정하면 i가 3일 때 console.log문이 실행되기 전에 타이머가 중지되므로 “3초마다 프로그램 실행 - 2”까지만 출력하고 멈추게 됩니다.

도움이 되었길 바라며, 추가 질문이 있으시면 언제든지 문의해 주세요!

외부 라이브러리 사용 질문

0

157

1

module 질문있습니다.

0

586

1

clearInterval, setInterval 질문

1

460

1

Date 함수 질문

0

290

1

Boolean 내장함수 강의 질문

0

323

1

4-04(마지막강의)에 있는 json으로 된 js파일은 어디에 있을까요?

0

412

1

Async Await 오류가 나서 문의드립니다.

0

566

2

선생님 안녕하세요. array내장함수 수업듣는중 이해가 안되는 부분이있어서 질문드립니다.

0

338

1

변수 관련 질문

0

288

1

Promis실습 도중의 에러메시지

0

450

2

moment.js cdn 외부 링크 오류

0

1468

1

64비트 부동소수점 내용 중

0

462

1

4-04 22분 15초에 나오는 61, 63 라인에 대해 질의드립니다.

0

253

1

64비트부동소수점 마지막부분 이해가 안가서요...

0

217

1

Chcekbox Element 값

0

228

1

parameter순서

0

468

1

parseInt parseFloat 질문

0

213

1

charAt 인덱스

0

219

0

STRING 결합

0

231

0

왜 오름차순으로 정렬되는지 궁금합니다.

0

246

1

HTML를 위한 자바스립트 4-01.HTML Element.html

0

349

1

함수 강의에서 8:47초 부분 질문 있습니다.

0

227

1

정규식 관련해서 질문이 있습니다.

1

310

2

module강의의 예제 코드를 사용하면 에러가 생겨서 질문드립니다.

0

375

1