๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript/Nomad Coders

[TIL] ๐Ÿ’ก Day 8 - JavaScript๋กœ ํƒ€์ด๋จธ ๋งŒ๋“ค๊ธฐ

by vividmin 2022. 4. 16.
320x100

โœ” ์ด ํฌ์ŠคํŒ…์€ ๋…ธ๋งˆ๋“œ์ฝ”๋” - "๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ๋ฅผ ๋“ค์œผ๋ฉด์„œ ๊นƒํ—ˆ๋ธŒ์— ๊ธฐ๋กํ•œ ํ•„๊ธฐ๋ฅผ ์˜ฎ๊ธด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

                                                       โฑ Vanilla JS๋กœ ํƒ€์ด๋จธ ๋งŒ๋“ค๊ธฐ

 

 

๐ŸŒฑ Interval vs Timeout

๐Ÿ‘‰ ๋‘˜์˜ ์‚ฌ์šฉ๋ฒ•๊ณผ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ

  • Interval
    • ๋งค๋ฒˆ ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š” ์ผ์— ์‚ฌ์šฉ
    • JS์— ์ด๋ฏธ ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜
    • setInterval(ํ•จ์ˆ˜๋ช…, ๋ฐ˜๋ณต๋  ์‹œ๊ฐ„(ms)) ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • Timeout
    • ํ•œ ๋ฒˆ ์‹คํ–‰ ํ›„ ๋ฐ˜๋ณต๋˜์ง€ ์•Š์Œ
    • ์„ค์ •ํ•œ ์‹œ๊ฐ„ ๋’ค์— ํ•œ ๋ฒˆ ์‹คํ–‰๋œ๋‹ค.
    • setTimeout(ํ•จ์ˆ˜๋ช…, ์‹คํ–‰๋  ์‹œ๊ฐ„(ms)) ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๐Ÿ”— Date ๊ด€๋ จ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ - MDN
    • ex) getDay, getFullYear, getHours, getMinutes, getSeconds...
  • ๐Ÿ‘‰ ํƒ€์ด๋จธ์—๋Š” setIntervalํ•จ์ˆ˜ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.
  • ์˜ˆ์‹œ ์ฝ”๋“œ
    setInterval(getClock, 1000) // 1์ดˆ ๋งˆ๋‹ค ๊ณ„์† ์‹คํ–‰ 
    setTimeout(getClock, 5000) // 5์ดˆ ๋’ค ํ•œ๋ฒˆ ์‹คํ–‰

 

 

๐ŸŒฑ ํ˜„์žฌ ์‹œ๊ฐ„ ํ‘œ์‹œํ•˜๊ธฐ

๐Ÿ‘‰ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„, ๋‚ ์งœ data ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

  • ์‹œ๊ฐ„ ๊ฐ€์ ธ์˜ค๊ธฐ
    • getHours, getMinutes, getSeconds๋ฅผ ์‚ฌ์šฉ
  • ๋‚ ์งœ ๊ฐ€์ ธ์˜ค๊ธฐ
    • new Date( ) ์‚ฌ์šฉ
    • new ๋ถ™์ด๋Š” ์ด์œ ?
      : ๊ทธ๋ƒฅ date( ); ๋Š” new date( );๋ฅผ ์“ด ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ string์œผ๋กœ ๋งŒ๋“  ๊ฒƒ,
      ๋”ฐ๋ผ์„œ getHours ๊ฐ™์€ property๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค!
    // new ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ? 
    date( ); === new date( ).toString();
  • ์˜ˆ์‹œ ์ฝ”๋“œ
    function getClock() { 
        // ๋‚ ์งœ 
        const date = new Date(); 
        // ์‹œ, ๋ถ„, ์ดˆ ๋ถ„๋ฆฌ 
        const hours = date.getHours(); 
        const minutes = date.getMinutes(); 
        const seconds = date.getSeconds(); 
        clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; 
    } 

	setInterval(getClock, 1000);
  • ๊ฐœ์„ ํ•  ์š”์†Œ ๐Ÿค”
    • ์‹œ๊ฐ„ ํ‘œ์‹œ๊ฐ€ ํ•œ ์ž๋ฆฌ ์ผ ๋•Œ 01, 02, 03 ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณด์ด๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.
    • ์ƒˆ๋กœ ๊ณ ์นจ ํ•˜๋ฉด 1์ดˆ ๋’ค์— ์‹œ๊ฐ„์ด ํ‘œ์‹œ๋œ๋‹ค.

 

 

๐ŸŒฑ PadStart

๐Ÿ‘‰ ์‹œ๊ฐ„ ํ‘œ์‹œ 01, 02, 03 ๊ฐ™์ด ๋ณด์ด๋„๋ก ์ˆ˜์ •ํ•˜๊ธฐ

  • PadStart
    • ๊ฐ€์ง€๊ณ  ์žˆ๋Š” string์„ ๋ณด๋‹ค ๊ธธ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ
    • ์‚ฌ์šฉ๋ฒ• : padStart(๊ฐ€์ ธ์•ผ ํ•  ์ž๋ฆฟ์ˆ˜, "๋นˆ์ž๋ฆฌ์— ์ฑ„์šฐ๊ณ  ์‹ถ์€ ์ˆซ์ž ๋˜๋Š” ๋ฌธ์ž")
    • ๐Ÿ“ ์ฃผ์˜์‚ฌํ•ญ
      : padStart๋Š” string์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ -> number๋Š” string์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. → String(๋ณ€ํ™˜ํ•  ์ˆซ์ž)
  • ์˜ˆ์‹œ ์ฝ”๋“œ
    const hours = String(date.getHours()).padStart(2, "0"); 
    const minutes = String(date.getMinutes()).padStart(2, "0"); 
    const seconds = String(date.getSeconds()).padStart(2, "0");
  • hours, minutes, seconds๊ฐ€ string์œผ๋กœ ๋ณ€ํ™˜๋์œผ๋ฏ€๋กœ clock์— ๋„ฃ์€ ๋ณ€์ˆ˜์˜ ํ˜•ํƒœ๋„ ๋ณ€ํ™˜๋œ๋‹ค.
    // ๋ณ€ํ™˜ ์ „ 
    clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; 
    // ๋ณ€ํ™˜ ํ›„ 
    clock.innerText = `${hours}:${minutes}:${seconds};
  • โž• ์ถ”๊ฐ€๋กœ ๋ฐฐ์šด ๊ฒƒ
  • PadEnd : ๊ฐ€์ง„ string๋’ค์˜ ์ž๋ฆฌ๋ฅผ ์ฑ„์šธ ๋•Œ ์‚ฌ์šฉ
  • string ๊ธธ๊ฒŒ ๋งŒ๋“ค ๋•Œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ

 

 

๐ŸŒฑ ํŽ˜์ด์ง€ ๋กœ๋“œ๋˜๋Š” ์ˆœ๊ฐ„ ํƒ€์ด๋จธ ์‹œ์ž‘๋˜๋„๋ก ์„ค์ •ํ•˜๊ธฐ

๐Ÿ‘‰ setInterval๋งŒ ์“ฐ๋ฉด 1์ดˆ ๋’ค์— ํƒ€์ด๋จธ๊ฐ€ ๋™์ž‘๋œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž

  • ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
    • setInterval์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— getClick ํ•จ์ˆ˜๋ฅผ ํ•œ ๋ฒˆ ๋” ํ˜ธ์ถœํ•ด ์ค€๋‹ค.
  • ์ตœ์ข… ์ฝ”๋“œ
    const clock = document.querySelector("#clock"); 

    function getClock() { 
        const date = new Date();
        const hours = String(date.getHours()).padStart(2, "0");
        const minutes = String(date.getMinutes()).padStart(2, "0");
        const seconds = String(date.getSeconds()).padStart(2, "0");
        clock.innerText = ${hours}:${minutes}:${seconds};
    }
    
    getClock();
    setInterval(getClock, 1000)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€