Window

SetTimeout

WindowTimers μ—μ„œ μ§€μ›ν•˜λŠ” 타이머 κ°μ²΄λ‘œμ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μΌμ •μ‹œκ°„ λŒ€κΈ°ν•˜μ˜€λ‹€κ°€ UI 큐에 μž‘μ—…μ„ μΆ”κ°€ ν•œλ‹€.

UI 큐에 μΆ”κ°€ν•œ μž‘μ—…μ€ 이전에 μΆ”κ°€λœ μž‘μ—… λŒ€κΈ°μ—΄ 이후에 싀행될 수 μžˆλ„λ‘ μ˜ˆμ •λœλ‹€.

[window.]setTimeout(callback[, delay[, param1[, ... paramN]]]);
  • window
    • this 객체가 window μΌλ•Œ μƒλž΅ κ°€λŠ₯
  • callback
    • μ§€μ—°λœ μ‹œκ°„μ΄ λλ‚œ ν›„ μ‹€ν–‰λ˜λŠ” 콜백 ν•¨μˆ˜
  • delay
    • ν•¨μˆ˜ 지연 μ‹œκ°„ (default : 0)
  • param1 ... paramN
    • 콜백 ν•¨μˆ˜λ‘œ 전달될 λ§€κ°œλ³€μˆ˜
    • IE9 μ΄ν•˜μ—μ„œλŠ” λ§€κ°œλ³€μˆ˜ 전달이 μ•ˆλœλ‹€. (IE 10 이상 지원)

Example #1 : JS - ES5

var timeoutId;

// 타이머 μ„ΈνŒ…
function setTimer() {
    timeoutId = window.setTimeout(function () {
        alert('Notice');
    }, 2000);
}

// 타이머 μ‚­μ œ
function cancleTimer() {
    window.clearTimeout(timeoutId);
}

μ§€μ •λœ μ‹œκ°„ 이후에 UI μž‘μ—… 큐에 μΆ”κ°€λ˜κΈ° λ•Œλ¬Έμ— μ‹€μ œλ‘œ μ–Έμ œ μ‹€ν–‰ λ˜λŠ”μ§€λŠ” μ•Œ 수 μ—†λ‹€.

SetInterval

μΌμ •ν•œ μ£ΌκΈ°λ₯Ό κΈ°κ°„μœΌλ‘œ callback ν•¨μˆ˜λ₯Ό 호좜 ν•©λ‹ˆλ‹€.

[window.]setInterval(callback, delay[, param1[, ... paramN]]);
  • window
    • this 객체가 window μΌλ•Œ μƒλž΅ κ°€λŠ₯
  • callback
    • μ§€μ—°λœ μ‹œκ°„μ΄ λλ‚œ ν›„ μ‹€ν–‰λ˜λŠ” 콜백 ν•¨μˆ˜
  • delay
    • ν•¨μˆ˜ 지연 μ‹œκ°„ (default : 0)
  • param1 ... paramN
    • 콜백 ν•¨μˆ˜λ‘œ 전달될 λ§€κ°œλ³€μˆ˜
    • IE9 μ΄ν•˜μ—μ„œλŠ” λ§€κ°œλ³€μˆ˜ 전달이 μ•ˆλœλ‹€. (IE 10 이상 지원)

Example

var intervalID;

// 타이머 μ„ΈνŒ… 
function setTimer() {
    intervalId = window.setInterval(function () {
        alert('Notice');
    }, 2000);
}

// 타이머 μ‚­μ œ 
function cancleTimer() {
    window.clearInterval(intervalId);
}

RequestAnimationFrame

λΈŒλΌμš°μ €μ—κ²Œ callback ν•¨μˆ˜λ₯Ό (ν”„λ ˆμž„ λ‹¨μœ„λ‘œ μ²˜λ¦¬λ˜λŠ”) ν˜ΈμΆœν•˜λ„λ‘ ν•œλ‹€.

이 callback 은 보톡 1μ΄ˆμ— 60회 정도 호좜되게 섀계 λ˜μ–΄ μžˆμ§€λ§Œ
W3C ꢌμž₯사항에 따라 λ””μŠ€ν”Œλ ˆμ΄μ˜ μ£Όμ‚¬μœ¨κ³Ό μΌμΉ˜ν•˜λ„λ‘ μ‹€ν–‰ λ©λ‹ˆλ‹€.

<iframe> μ—μ„œλŠ” requestAnimationFrame() 의 호좜이 멈좜수 μžˆμŠ΅λ‹ˆλ‹€.

[window.]requestAnimationFrame(callback);

Polyfill

λΈŒλΌμš°μ € λ³„λ‘œ λ‹€λ₯Ό μˆ˜κ°€ μžˆμœΌλ‹ˆ μ•„λž˜ ꡬ문으둜 μ‚¬μš©μ„ κΆŒν•œλ‹€.

const reqAnimate = window.requestAnimationFrame
      || window.webkitRequestAnimationFrame
      || window.mozRequestAnimationFrame
      || window.oRequestAnimationFrame
      || window.msRequestAnimationFrame
      || ((callback) => {
        window.setTimeout(callback, 1000 / 60);
      });

reqAnimate(() => {
/* statement */
});

encodeURI vs encodeURIComponent

  • encodeURI / decodeURI
    • μ΅œμ†Œν•œμ˜ 문자만 인코딩 ν•©λ‹ˆλ‹€.
    • ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) # 와 같은 νŠΉμˆ˜λ¬ΈμžλŠ” 인코딩 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • encodeURIComponent / decodeURIComponent
    • λŒ€λΆ€λΆ„μ˜ 문자λ₯Ό 인코딩 ν•©λ‹ˆλ‹€.
  • escape / unescape
    • encodeURI 와 encodeURIComponent 의 μ€‘κ°„μ •λ„μ˜ 문자λ₯Ό 인코딩 ν•©λ‹ˆλ‹€.