๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Language/JavaScript

JavaScript - intro, ๋ณ€์ˆ˜

by DevIseo 2022. 4. 26.

JavaScript ๊ธฐ์ดˆ

 

<๋“ค์–ด๊ฐ€๊ธฐ ์ „>

a=b —> b๋ฅผ a์— “ํ• ๋‹น”ํ•œ๋‹ค

ํ• ๋‹น : “์ตœ์ดˆ”์— ๋ฌด์–ธ๊ฐ€๋ฅผ a์— ๋„ฃ๋Š” ํ–‰์œ„

์žฌํ• ๋‹น : “๊ฐ™์€๊ณต๊ฐ„(๋ฉ”๋ชจ๋ฆฌ→๋ณ€์ˆ˜a)”์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋„ฃ๋Š” ํ–‰์œ„

๋ฐ์ดํ„ฐ ํƒ€์ž… : ์›์‹œ๊ฐ’,๊ฐ์ฒด๊ฐ’

๐ŸคIntro

|๋ธŒ๋ผ์šฐ์ € (browser === browse;๊ฒ€์ƒ‰ํ•˜๋‹ค+er;~ํ•˜๋Š” ๊ฒƒ)

  • URL๋กœ ์›น(WWW)์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ณ , HTML ๋ฌธ์„œ๋‚˜ ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜๋Š” GUI ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด
  • ์ธํ„ฐ๋„ท์˜ ์ปจํ…์ธ ๋ฅผ ๊ฒ€์ƒ‰ ๋ฐ ์—ด๋žŒํ•˜๋„๋ก ํ•จ
  • “์›น ๋ธŒ๋ผ์šฐ์ €”๋ผ๊ณ ๋„ ํ•จ
  • ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €
    • Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Safari

|JavaScript์˜ ํ•„์š”์„ฑ

  • ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์„ ‘๋™์ ’์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ
  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์–ธ์–ด

๐ŸคBrowser

|Browser์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ

  • DOM(Document Object Model) ์กฐ์ž‘ • ๋ฌธ์„œ(HTML) ์กฐ์ž‘
  • BOM(Browser Object Model) ์กฐ์ž‘ • navigator, screen, location, frames, history, XHR
  • JavaScript Core (ECMAScript) • Data Structure(Object, Array), Conditional Expression, Iteration

๐ŸคSemicolon

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ๋ฏธ์ฝœ๋ก  ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์„ธ๋ฏธ์ฝœ๋ก ์ด ์—†์œผ๋ฉด ASI์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฝ์ž…

๐Ÿค๋ณ€์ˆ˜์™€ ์‹๋ณ„์ž

|์‹๋ณ„์ž ์ •์˜์™€ ํŠน์ง•

  • ๋ณ€์ˆ˜(variables) 
    • ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„!
    • ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์ด ์ฃผ์–ด์ง„ ๊ธฐ์–ต์žฅ์†Œ
    • ์–ด๋– ํ•œ ํ•œ ๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ถ™์ธ ์ด๋ฆ„
    • ์–ด๋– ํ•œ ์ƒ์ž(๋ฉ”๋ชจ๋ฆฌ)์— ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ → ๊ทธ ์ƒ์ž์— ์ด๋ฆ„์„ ๋ถ™์ธ ๊ฒƒ!
  • ์‹๋ณ„์ž(identifier)
    • ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž, ๋‹ฌ๋Ÿฌ($),๋ฐ‘์ค„(_)๋กœ ์‹œ์ž‘
    • ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ช… ์™ธ์—๋Š” ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘
    • ์˜ˆ์•ฝ์–ด ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ (์˜ˆ์•ฝ์–ด : for, if, function๋“ฑ)

|๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ(let,const)

  • let
    • ์žฌํ• ๋‹น ํ•  ์˜ˆ์ •์ธ ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ์‚ฌ์šฉ
    • ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
    • ๋ธ”๋ก์Šค์ฝ”ํ”„
    • ์žฌํ• ๋‹น ๊ฐ€๋Šฅ!
  • const
    • ์žฌํ• ๋‹น ํ•  ์˜ˆ์ •์ด ์—†๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ์‚ฌ์šฉ
    • ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
    • ๋ธ”๋ก์Šค์ฝ”ํ”„
    • default๋ฅผ const๋กœ ํ•˜๊ณ  ์žฌํ• ๋‹น ์‹œ let์œผ๋กœ ๊ณ ์น˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ.
    • ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ!
      • (๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅ (๋ฐฐ์—ด์— push,pop์ด์šฉํ•ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ), but “=”๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€)

*๋ธ”๋ก์Šค์ฝ”ํ”„(block scope)

  • if,for,ํ•จ์ˆ˜ ๋“ฑ์˜ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • ๋ธ”๋ก์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ!

|์„ ์–ธ, ํ• ๋‹น, ์ดˆ๊ธฐํ™”

let foo //์„ ์–ธ
console.log(foo) //undefined

foo = 11 //ํ• ๋‹น
console.log(foo) // 11

let bar = 0 //์„ ์–ธ+ํ• ๋‹น
console.log(bar) //0
  • ์„ ์–ธ(Declaration)
    • ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 
  • ํ• ๋‹น(Assignment)
    • ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 
  • ์ดˆ๊ธฐํ™”(Initialization)
    • ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ฒ˜์Œ์œผ๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 

|๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ(var)

var

  • var๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์žฌ์„ ์–ธ ๋ฐ ์žฌํ• ๋‹น ๋ชจ๋‘ ๊ฐ€๋Šฅ
  • ES6 ์ด์ „์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋˜ ํ‚ค์›Œ๋“œ
  • ํ˜ธ์ด์ŠคํŒ…๋˜๋Š” ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ๋”ฐ๋ผ์„œ ES6 ์ดํ›„๋ถ€ํ„ฐ๋Š” var ๋Œ€์‹  const์™€ let์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(function scope) •ํ•จ์ˆ˜์˜ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ด • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ฐ”๊นฅ์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
  • ํ˜ธ์ด์ŠคํŒ…(hoisting) • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ ์ด์ „์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ • ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์˜ ์œ„์น˜์—์„œ ์ ‘๊ทผ ์‹œ undefined๋ฅผ ๋ฐ˜ํ™˜

 

ํ‚ค์›Œ๋“œ  ์žฌ์„ ์–ธ  ์žฌํ• ๋‹น  ์Šค์ฝ”ํ”„  ๋น„๊ณ 
let x o block scope ES6๋ถ€ํ„ฐ ๋„์ž…
const x x block scope ES6๋ถ€ํ„ฐ ๋„์ž…
var o o function scope ์‚ฌ์šฉ X

|let &const์™€ var์˜ ์ฐจ์ด์ 

1. let & const๋Š” ๋ธ”๋Ÿญ๋‹จ์œ„ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด var๋Š” global scope ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
2. var๋Š” ๋ณ€์ˆ˜์˜ ์žฌ์„ ์–ธ์„ ํ—ˆ์šฉํ•œ๋‹ค.
   - let์€ ์žฌํ• ๋‹น๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
   - const์€ ์žฌ์„ ์–ธ/์žฌํ• ๋‹น ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
3. hoisting
   - var๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” hoisting ๋  ๋•Œ ์„ ์–ธ & ์ดˆ๊ธฐํ™”(undefined)๊ฐ€ ๋™์‹œ์— ์ด๋ฃจ์–ด์ง„๋‹ค.
   - const / let์€ ์ดˆ๊ธฐํ™” ์ด์ „์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜์–ด ReferenceError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

|var์˜ ๋‹จ์  — var๋Š” ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฌ์šด ์ด์•ผ๊ธฐ์ด๋ฏ€๋กœ ์™ธ์šฐ์ง€ ๋ง์ž!

  • ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„
  • var ํ‚ค์›Œ๋“œ ์ƒ๋žต ํ—ˆ์šฉ
  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ํ—ˆ์šฉ
  • ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…
  • ๊ธด ์ƒ๋ช… ์ฃผ๊ธฐ
  • ์•”๋ฌต์  ๊ฒฐํ•ฉ
  • ์Šค์ฝ”ํ”„ ์ฒด์ธ ์ƒ ์ข…์ ์— ์œ„์น˜
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์˜ค์—ผ

๋Œ“๊ธ€