potatos
๐•๐•’๐•ฆ๐•ฃ๐•ฆ๐•ค
potatos
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Daily
    • Study
      • CS
      • Network
      • Windows
      • Linux
      • HTML & CSS
      • JavaScript
      • React
      • vue.js
      • Flutter
      • DataBase
      • Elastic Se..
      • Log
      • Coding Tes..
    • Work
      • PC
      • Mobile
      • JPGIF

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • notice

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • CSS
  • ์ˆ˜์ง ์ •๋ ฌ
  • Linux
  • ์…€๋ ‰ํ„ฐ
  • Windows
  • ์œˆ๋„์šฐ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • MySQL
  • JavaScript
  • HTML

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
potatos

๐•๐•’๐•ฆ๐•ฃ๐•ฆ๐•ค

[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Clock
Study/Log

[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Clock

2022. 5. 17. 22:40

Clock

#1. Interval

Interval์ด๋ž€? '๋งค๋ฒˆ' ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งค 2์ดˆ๋งˆ๋‹ค ์–ด๋– ํ•œ ์ผ์„ ๋ฐœ์ƒํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๊ทธ๋•Œ Interval๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. JavaScript์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค.

Interval๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด setInterval(function, ms)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ฒซ ๋ฒˆ์งธ argument๋Š” ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด ์ฃผ๋ฉด ๋˜๊ณ , ๋‘ ๋ฒˆ์งธ argument๋Š” ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์˜ ๊ฐ„๊ฒฉ์„ ๋ช‡ ms๋กœ ํ•  ์ง€ ๋„ฃ์–ด ์ฃผ๋ฉด ๋œ๋‹ค.

clock.js ๋ผ๋Š” ์ด๋ฆ„์˜ JS ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. sayHello๋ผ๋Š” ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋กœ console์— Hello๊ฐ€ ์ฐํžˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ, Interval์„ ์„ธํŒ…ํ•ด ์ฃผ๊ณ  ์ €์žฅํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด 5000ms(5์ดˆ)๋งˆ๋‹ค console์— Hello๊ฐ€ ์ฐํžˆ๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์œ ์˜ํ•  ์  ํ•œ ๊ฐ€์ง€. ์šฐ๋ฆฌ๊ฐ€ 5000ms๋กœ ์„ค์ •ํ•œ ๋งŒํผ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ console์— Hello๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€๋Š” ์•Š๋Š”๋‹ค. 5000ms๊ฐ€ ์ง€๋‚œ ํ›„, ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๊ณ„์† 5000ms๋งˆ๋‹ค Hello๊ฐ€ ์ฐํžŒ๋‹ค.

function sayHello() {
    console.log("Hello");
}

setInterval(sayHello, 5000);

#2. Timeout and Date

Timeout

์šฐ๋ฆฌ๋Š” setInterval์„ ์‹œ๊ณ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, ๊ณ„์†ํ•ด์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๊ทธ๊ฒƒ๋„ ๋ถ€๋‹ด์ด ๋˜์ง€ ์•Š๊ฒ ๋Š”๊ฐ€...... setInterval ์—†์ด ๊ทธ๋ƒฅ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ ์šฉํ•œ Interval์ด ์—†์œผ๋ฏ€๋กœ ๋ช‡ ์ดˆ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ๋ฐ”๋กœ console์— Hello๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, 5์ดˆ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ๊ทธ๋Ÿฐ๋ฐ Interval์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ˜๋ณต๋˜๋Š” ํ˜„์ƒ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด? ์ด๋•Œ timeout์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

setInterval๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๊ฐ™๋‹ค. setTimeout(function, ms)๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

function sayHello() {
    console.log("Hello");
}

setTimeout(sayHello, 5000);

Date

Interval๊ณผ Timeout์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•˜๋‹ค๋ฉด, ์ด์ œ ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ console์ฐฝ์— new Date()๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค. Date ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ๋” ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋“ค์„ ์•„๋ž˜ ํ‘œ๋กœ ์ •๋ฆฌํ•ด ๋‘์—ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ค๋ช…
new Date() ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ
getDate() ์ผ์ž
getDay() ์š”์ผ
getFullYear() ๋…„๋„
getHours() ์‹œ
getMinutes() ๋ถ„
getSeconds() ์ดˆ

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ด์ œ ์‹œ๊ณ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. getHours(), getMinutes(), getSeconds()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ง์ด๋‹ค. ์ดˆ๊ฐ€ ์ง€๋‚  ๋•Œ๋งˆ๋‹ค ์‹œ๊ณ„๋Š” ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๋ฉด์„œ ์šฐ๋ฆฌ์—๊ฒŒ ํ˜„์žฌ ์‹œ๊ฐ„์„ ์•Œ๋ ค ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” Timeout๋ณด๋‹ค Interval์ด ๋”์šฑ ์ ํ•ฉํ•  ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋‘˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ณ„๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ console์— ๋‚˜ํƒ€๋‚ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด์ž. ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋”๋‹ˆ console์— ์ง€์ •ํ•œ ๋Œ€๋กœ 1000ms ์ฆ‰, 1์ดˆ๋งˆ๋‹ค ์‹œ๊ฐ„์ด ์ฐํ˜€ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ setInterval ์ „์— ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด 1์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ํ›„, console์— ์ฐํ˜€๋‚˜์˜ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋จผ์ € ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ํ•ด ์‹œ๊ฐ„์„ ๋ณด์—ฌ ์ฃผ๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์šฐ๋ฆฌ์˜ ์ฝ”๋“œ๋Š” ๋งค ์ดˆ๋งˆ๋‹ค ์ƒˆ๋กœ์€ Date ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์œผ๋ฉฐ, Date ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด ์ค‘์— ์‹œ, ๋ถ„, ์ดˆ๋ฅผ console์— ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค.

function getClock() {
    const date = new Date();
    console.log(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`);
}

getClock();
setInterval(getClock, 1000);

ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” console์—์„œ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŽ˜์ด์ง€์—์„œ ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

HTML ํŒŒ์ผ์— clock์ด๋ผ๋Š” id๋ฅผ ๊ฐ€์ง„ h2๋ฅผ ์ž…๋ ฅํ•ด ์ค€ ํ›„, ๊ธฐ๋ณธ ๊ฐ’์€ 00:00:00์œผ๋กœ ๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ , JS ํŒŒ์ผ๋กœ ๋Œ์•„์™€ h2 ์š”์†Œ๋ฅผ ์ƒ์ˆ˜ clock์œผ๋กœ ์„ ์–ธํ•ด ์ค€ ๋’ค, console.log๋กœ ํ‘œํ˜„ํ•œ ๊ณณ์„ clock.innerText๋กœ ํ‘œํ˜„ํ•ด ์ฃผ๋ฉด ๋.

<form id="login-form" class="hidden">
    <input required 
    maxlength="15" 
    type="text" 
    placeholder="What is your name?" />
    <input type="submit" value="Log In" />
</form>

<h2 id="clock">00:00:00</h2>   <!--default ๊ฐ’์„ 00:00-->

<h1 id="greeting" class="hidden"></h1>
const clock = document.querySelector("h2#clock");

function getClock() {
    const date = new Date();
    clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
}

getClock();
setInterval(getClock, 1000);

#3. padStart

๊ทธ๋Ÿฌ๋‚˜, ๋ณด๊ธฐ์— ๋ถˆํŽธํ•œ ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ์‹œ, ๋ถ„, ์ดˆ๊ฐ€ ํ•œ ์ž๋ฆฌ ์ˆ˜๊ฐ€ ๋˜๋ฉด ๋”ฑ ํ•œ ์ž๋ฆฌ๋กœ๋งŒ ํ‘œํ˜„์ด ๋˜๊ณ  ์žˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€? string์˜ ๊ธธ์ด๊ฐ€ ์ตœ์†Œ 2๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 0์ด ์•„๋‹Œ 00์ด ๋˜๋„๋ก ๋ง์ด๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ์—ญ์‹œ JavaScript์—์„œ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๋ฐ”๋กœ padStart. string์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ padStart(์›ํ•˜๋Š”๊ธธ์ด, ๋‚จ๋Š”์ž๋ฆฌ์—์ž…๋ ฅ๋ string)์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธธ์ด๊ฐ€ 1์ธ string์˜ ๊ธธ์ด๋ฅผ 2๋กœ ๋งŒ๋“ค์–ด ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

์ฐธ๊ณ ๋กœ padEnd()๋Š” padStart()์™€ ๋‹ฌ๋ฆฌ ๋‚จ๋Š” ์ž๋ฆฌ์— ์ž…๋ ฅ๋  string์ด ๋’ค์— ์ž…๋ ฅ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์œผ๋‹ˆ, ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋ณด๋„๋ก ํ•˜์ž. ์‹œ, ๋ถ„, ์ดˆ๋ฅผ ๊ฐ€์ ธ์˜ค๋˜ Date ๊ฐ์ฒด๋“ค์„ ๋ชจ๋‘ ์ƒ์ˆ˜๋กœ ์„ ์–ธํ•ด ์ฃผ๊ณ , ๊ทธ ๋’ค์— padStart()๋ฅผ ๋ถ™์—ฌ ์ฃผ๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ! ์ธ ์ค„ ์•Œ์•˜์œผ๋‚˜...... ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. ์™œ๋ƒ? ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด padStart()๋Š” string์— ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ, ํ˜„์žฌ ์‹œ, ๋ถ„, ์ดˆ๋Š” string์ด ์•„๋‹Œ number์ด๊ธฐ ๋•Œ๋ฌธ. ๊ทธ๋ ‡๋‹ค๋ฉด, number๋ฅผ string์œผ๋กœ ๋ฐ”๊ฟ” ์ฃผ๋ฉด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋œ๋‹ค.

function getClock() {
    const date = new Date();
    const hours = date.getHours().padStart(2, "0");
    const minute = date.getMinutes().padStart(2, "0");
    const second = date.getSeconds().padStart(2, "0");

    clock.innerText = `${hours}:${minute}:${second}`;
}

string์œผ๋กœ ๋ฐ”๊ฟ” ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜๋ฅผ String()์œผ๋กœ ๊ฐ์‹ธ ์ฃผ๋ฉด ๋œ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ณ€๊ฒฝํ•ด ์ค€๋‹ค๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

function getClock() {
    const date = new Date();
    const hours = String(date.getHours()).padStart(2, "0");
    const minute = String(date.getMinutes()).padStart(2, "0");
    const second = String(date.getSeconds()).padStart(2, "0");

    clock.innerText = `${hours}:${minute}:${second}`;
}


Clock ํŒŒํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์•ž์„œ ํ–ˆ๋˜ Login ํŒŒํŠธ๋ณด๋‹ค ์งง์•„ ๋น„๊ต์  ๊ธˆ๋ฐฉ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒํŠธ์˜€๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ๊ฐ์ฒด๋“ค๋„ ๋งŽ์ด ๋‚˜์™€์„œ ๋”์šฑ ์ˆ˜์›”ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ ...... ๊ทธ๋Ÿฐ๋ฐ partStart์™€ partEnd๋Š” ์ฒ˜์Œ ๋งŒ๋‚˜๋Š” ๊ฐ์ฒด์˜€๋‹ค. ์•„๋งˆ Date ๊ฐ์ฒด ์ž์ฒด ์ค‘์— ์ €๋ ‡๊ฒŒ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์ด ์žˆ๊ธฐ๋„ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์‚ฌ์‹ค ์ž์„ธํžˆ ๊ธฐ์–ต์ด ๋‚˜์ง„ ์•Š๋Š”๋‹ค. 
์›๋ž˜ ์žˆ๋˜ ์ง€์‹์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šฐ๊ฒŒ ๋œ ํŒŒํŠธ์˜€๋‹ค.

 

'Study > Log' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Weather & ๋งˆ๋ฌด๋ฆฌ  (0) 2022.06.16
[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #To Do List  (0) 2022.05.31
[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Quotes And Background  (0) 2022.05.19
[JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Momentum ์†Œ๊ฐœ ๋ฐ Login  (0) 2022.05.15
    'Study/Log' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Weather & ๋งˆ๋ฌด๋ฆฌ
    • [JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #To Do List
    • [JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Quotes And Background
    • [JS] ๋…ธ๋งˆ๋“œ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ #Momentum ์†Œ๊ฐœ ๋ฐ Login
    potatos
    potatos

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”