window 객체의 속성과 메서드

 

 

 

1. window 객체의 타이머 관련 메서드

 

1) JavaScript 타이머

  ① 일정한 시간이 지난 후 지정한 기능을 수행하는 타이머

  ② 일정한 시간 간격마다 지정한 기능을 수행하는 타이머

 

2) window.setTimeout 메서드

      - 일정한 시간이 지난 후 지정한 기능을 수행하는 타이머를 등록

 

3) window.setInterval 메서드

      - 일정한 시간 간격마다 지정한 기능을 수행하는 타이머를 등록

 

① 매개변수

  • function : 일정 시간 후에, 또는 일정 시간 간격마다 실행할 기능
  • milliseconds : 일정 시간(ms 단위의 숫자) 

② 반환 값

  • Timer ID : 등록한 타이머의 ID (number)

 

     window.setTimeout ( function, milliseconds );

     window.setInterval ( function, milliseconds );

 

4) window.clearTimeout 메서드

   - setTimeout 메서드로 등록한 타이머를 해제

 

5) window.clearInterval 메서드

   - setInterval 메서드로 등록한 타이머를 해제

 

① 매개변수

   - timerID : 해제하고자 하는 타이머의 ID

 

  • clearTimeout 메서드의 매개변수 : setTimeout 메서드의 반환 값
  • clearInterval 메서드의 매개변수 : setInterval 메서드의 반환 값

 

     window.clearTimeout( timerId );

     window.clearInterval( timerId );

 

타이머 예제

 

<script>

    // 2초가 지난 후에
    // → window.setTimeout 메서드로 타이머를 등록해서 구현(인자는 총 2개 → function, ms)
    // → 아래 문장은 타이머를 등록한다. 이렇게 등록한 타이머에 의해 2000ms가 지나면 첫 번째 인자로 넣어준 함수가 실행된다.
    window.setTimeout(function () { console.log("Hello World!"); }, 2000);
    // 타이머는 등록만 해놓을 뿐 실행은 브라우저가 하는 것이다.
    // 그러므로 window ~ 2000); 문장은 브라우저에 바로 출력되고 콘솔창에 "Hello World!"는 2초 뒤에 출력되는 것이다.

    //-----------------------------------------------------------------
    // 함수의 매개변수에 함수를 전달하고자 할 때 이렇게 전달할 함수를 미리 선언해두고
    // 함수의 식별자를 통해 함수의 매개변수에 전달할 수 있다.
    function sayMerong () {
        console.log("메롱!");
    }

    // 1초마다
    // → window.setInterval 메서드로 타이머를 등록해서 구현
    var timerId = window.setInterval(sayMerong, 1000);

    console.log("SET: timerId = " + timerId);
    // → SET: timerId = 2;

    //-----------------------------------------------------------------
    // 등록해놓은 타이머를 해제

    window.setTimeout(function () {
        // 이 함수는 setTimeout 메서드로 등록한 타이머에 의해 5000ms가 지난 후에 실행된다.
        console.log("CLEAR: timerId = " + timerId);

        // 등록해놓은 타이머를 해제하기 위해서는 해제하고자 하는 타이머의 ID를 알고 있어야 한다.
        // 타이머 ID는 window.setTimeout 메서드 또는 window.setInterval 메서드가 타이머를 등록한 후 반환하는 값이다.
        // 따라서 나중에 타이머를 해제하기 위해서는 이 메서드들이 반환하는 값을 변수에 대입해놓아야 한다
        window.clearInterval(timerId);
        // → 변수 timerId에는 위에서 setInterval 메서드로 등록한 타이머의 ID가 저장되어 있다
        //  따라서 clearInterval 메서드는 위에서 setInterval 메서드로 등록한 타이머를 해제한다.

    }, 5000);

</script>

 

예시의 결과

 

 

연습문제

 

2초에 한 번씩 console.log 메서드를 이용해 개발자 도구의 콘솔 창에 다음과 같은 메시지 다섯 개를 출력하는 JavaScript 프로그램을 작성하라. (메시지는 다섯 개만 출력하고 프로그램이 끝난다.)

 

     1. Time is gold.

     2. No sweat, no sweet.

     3. Asking costs nothing.

     4. Step by step goes a long way.

     5. You will never know until you try.

 

<script>
    var sayings = [
        "1. Time is gold.",
        "2. No sweat, no sweet.",
        "3. Asking costs nothing.",
        "4. Step by step goes a long way.",
        "5. You will never know until you try."
    ];

    var i = 0;

    var timerId = window.setInterval(function () {
        console.log(sayings[i]);

        i++;

        if ( i == sayings.length)
            window.clearInterval(timerId);
    }, 2000);

</script>

 

연습문제의 결과