๐Ÿ“Œ JS ๊ฐ„๋‹จ ์†Œ๊ฐœ! ๐Ÿ‘€

์ œ๋ก ยท2022๋…„ 4์›” 8์ผ
3
post-thumbnail

์ง€๊ธˆ๊นŒ์ง€ HTML๊ณผ CSS์—์„œ ๋†“์น˜๊ธฐ ์‰ฌ์šด ๊ฐœ๋…๋“ค์„ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‘๊ฐœ๋งŒ ํ•ด๋„ ๊ฝค ๋งŽ์€ ์–‘์„ ํ•™์Šตํ–ˆ๊ณ  ์ง„์งœ๋กœ ์›น์‚ฌ์ดํŠธ ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ ํ™œ์šฉํ•ด๋ณด๋Š” ๊ฒƒ๋งŒ ๋‚จ์•˜๋„ค์š”. ์ง์ ‘ ์ƒˆ๋กœ์šด ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ์ด๋ฏธ ์ž˜ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ํด๋ก  ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ๋„ HTML, CSS๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์•„์ฃผ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„  JS๋„ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ด์ง ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.
JS๋Š” ์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ ‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ณ  ํ‘œ์ค€ ๊ฐœ๋ฐœ์ž ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ฐธ๊ณ  ์ž๋ฃŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” JS๋ฅผ ๋งŽ์ด ์ ‘ํ•ด๋ณด์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ธˆ ๊ณต๋ถ€๋ฅผ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. JS๋ฅผ ๋ณด๊ณ  ๋Š๋‚€์ ์€ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ์ธ ์ , ํŒŒ์ด์ฌ๊ณผ ๋น„๊ตํ•˜๋ฉด ์กฐ๊ธˆ ๋ณต์žกํ•˜๊ฒŒ ์ฝ”๋“œ๊ฐ€ ์“ฐ์ธ๋‹ค๋Š” ์ ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ๊ฐœ๋ฐœ์˜์—ญ์— ๋“ค์–ด์„  ๊ธฐ๋ถ„์ด์—ˆ๊ณ  ๋‚œ์ด๋„๊ฐ€ ํ™• ์˜ฌ๋ผ๊ฐ”์Šต๋‹ˆ๋‹ค(HTML, CSS๊ฐ€ ์ข‹์•˜์ง€...). ์•ž์œผ๋กœ ๊ณ„์† ๋งˆ์ฃผ์น  JS์™€ ์นœํ•ด์ง€๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•  ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋‹ˆ ์ฐธ ์ข‹์Šต๋‹ˆ๋‹ค.. ํ•˜ํ•˜

๊ทธ๋Ÿผ.. let's get started

ํ‘œ๊ธฐ๋ฒ•

  • dash-case(kebab-case) โ†’ ํ•˜๋‚˜์˜ ๋‹จ์–ด๋กœ ์ธ์‹, ๋„์–ด์“ฐ๊ธฐ ๋Š๋‚Œ

    • HTML
    • CSS
  • snake_case

    • HTML
    • CSS
  • camelCase

    • JS
  • PascalCase โ†’ ๋‹จ์–ด ์ฒซ ๋ฌธ์ž ๋Œ€๋ฌธ์ž
    - JS

    (ํŒŒ์ด์ฌ์—์„œ๋Š” snake ์ผ€์ด์Šค๋ฅผ ๋งŽ์ด ์ผ์—ˆ๋Š”๋ฐ JS๋Š” camel์„ ์“ฐ๋Š”๊ตฐ์š”!)

์ž๋ฃŒํ˜•

  • String(๋ฌธ์ž ๋ฐ์ดํ„ฐ)

    • ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•จ
  • Number(์ˆซ์ž ๋ฐ์ดํ„ฐ)

    • ์ •์ˆ˜ ๋ฐ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • Boolena(๋ถˆ๋ฆฐ ๋ฐ์ดํ„ฐ)

    • true, false ๋‘ ๊ฐ€์ง€ ๊ฐ’๋ฐ–์— ์—†๋Š” ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ
  • Undefined

    • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • Null

    • ์–ด๋–ค ๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ๋น„์–ด์žˆ์Œ์„ ์˜๋ฏธ
  • Object(๊ฐ์ฒด ๋ฐ์ดํ„ฐ)

    • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ Key:Value ํ˜•ํƒœ๋กœ ์ €์žฅ โ†’ {}
  • Array(๋ฐฐ์—ด ๋ฐ์ดํ„ฐ)

    • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ โ†’ []

์ž๋ฃŒํ˜•์€๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ, Null๊ณผ Undefined์˜ ๊ตฌ๋ถ„์ด ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š”๋ฐ,

  • Null -> ์˜๋„์ 
  • Undifined -> ์˜๋„X
    ๋ผ๊ณ  ๊ธฐ์–ตํ•˜๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ณ€์ˆ˜

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฐธ์กฐ(์‚ฌ์šฉ)ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„ โ†’ let, const, (var)

    • let - ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
    • const - ์žฌํ• ๋‹น ๋ถˆ๊ฐ€
  • ์˜ˆ์•ฝ์–ด(Reserved Word) - ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ด๋ฆ„ ๋“ฑ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋‹จ์–ด

    • this, if, break ...

์—ญ์‹œ ๋ณ€์ˆ˜๋Š” ์ค‘์š”ํ•˜๊ณ  ํŒŒ์ด์ฌ๊ณผ ๋‹ค๋ฅด๊ฒŒ JS๋Š” ์•ž์— let, const๋ฅผ ๋ถ™์—ฌ์„œ ๋ณ€์ˆ˜์˜ ๋ณ€ํ™”๊ฐ€ ์ž์œ ๋กœ์šด์ง€ ์ƒ์ˆ˜๋กœ ๊ณ ์ •ํ•ด์•ผํ•˜๋Š”์ง€ ๋ฏธ๋ฆฌ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

ํ•จ์ˆ˜

  • ํŠน์ • ๋™์ž‘(๊ธฐ๋Šฅ)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ถ€ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ(๋ถ€๋ถ„) โ†’ function

    • ํ•จ์ˆ˜(a, b) โ†’ a, b๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(Parametets) โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์ฃผ๋Š” ๋งค๊ฐœ์ฒด

    • ํ•จ์ˆ˜ ํ˜ธ์ถœ(a,b) โ†’ a, b๋Š” ์ธ์ˆ˜(Arguments) โ†’ ์ž…๋ ฅํ•  ๋ฐ์ดํ„ฐ

    • ์†์„ฑ ๋ถ€๋ถ„์— ํ•จ์ˆ˜๊ฐ€ ํ‘œํ˜„๋˜์–ด ์žˆ์œผ๋ฉด ๋ฉ”์†Œ๋“œ(Method)

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜์˜ ์ฐจ์ด๋Š” ๋งŽ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…์ธ๋ฐ ํ™•์‹คํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค! ๐Ÿค”

DOM API

  • Document Object Model, Application Programming Interface

    • DOM์€ ์›น์‚ฌ์ดํŠธ์˜ ์š”์†Œ

    • API๋Š” ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž…๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ช…๋ น

    • ํ•˜๋‚˜์˜ html ์š”์†Œ ๊ฒ€์ƒ‰/์ฐพ๊ธฐ

      • const boxEl = document.querySelector(โ€™.bocโ€™)
      • boxEl.addEventListener()
      • boxEl.addEventListener(1, 2)
      • boxEl.addEventListener(โ€™clickโ€™, 2)
      • boxEl.addEventListener(โ€™clickโ€™, function() {
        console.log(โ€™Click~!โ€™)
        })
      • boxEl.classList.add(โ€™activeโ€™)
        let isContains = boxEl.classList.contains(โ€™activeโ€™)
      • boxEl.classList.remove(โ€™activeโ€™)
        isContains = boxEl.classList.contains(โ€™activeโ€™)
        console.log(isContains)
  • html ์š”์†Œ ๋ชจ๋‘ ๊ฒ€์ƒ‰/์ฐพ๊ธฐ

    • const boxEls = document.querySelectorAll(โ€™.boxโ€™)

    • boxEls์€ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋จ

    • boxEls.forEach(function () {})

      • ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(boxEl): ๋ฐ˜๋ณต ์ค‘์ธ ์š”์†Œ

      • ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(index): ๋ฐ˜๋ณต ์ค‘์ธ ๋ฒˆํ˜ธ

      • boxEls.ForEach(function (boxEl, index) {
        boxEl.classList.add(order-${index+1})
        console.log(index, boxEl)

    • Getter, ๊ฐ’์„ ์–ป๋Š” ์šฉ๋„

      • console.log(boxEl.textContent)
    • Setter, ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ์šฉ๋„

      • boxEl.textContent = "zerone"

JS๋กœ HTML/CSS๋ฅผ ์ปจํŠธ๋กค ํ•  ๋•Œ ์•ž์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•  API์ž…๋‹ˆ๋‹ค. ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™€ JS๋กœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ๋งŽ์ด์“ฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด "๋ฒ„ํŠผ์„ ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ–ˆ์„ ๋•Œ ์‚ฌ์ง„์ด ๋‚˜ํƒ€๋‚˜๋ผ " ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ DOM, API๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! cool~ ๐Ÿ˜ฎ

์˜ค๋Š˜์€ JS๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. JS์—์„œ ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ์€ ์—„์ฒญ ๋งŽ์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋งŒ ์ˆ™์ง€ํ•˜๊ณ  ํด๋ก  ์ฝ”๋”ฉ์„ ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

To be continued...! ๐Ÿซ 

profile
Software Developer

0๊ฐœ์˜ ๋Œ“๊ธ€