โ†ย ๋’ค๋กœ๊ฐ€๊ธฐ

1์žฅ ์ฑ•ํ„ฐ 1. ํƒ€์ž…

2023/02/04

ํƒ€์ž…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ํƒ€์ž…์ด๋ž€?

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒ€์ž…์ด๋ž€, ์–ด๋–ค ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ๋‚ด๋ถ€ ํŠน์„ฑ์„ ๋งํ•œ๋‹ค

๋‚ด์žฅ ํƒ€์ž…

  • JS๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์žฅ ํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค
  • object๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋Š” ์›์‹œ(premitive)ํƒ€์ž…์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค
  • null์„ ์ œ์™ธํ•œ ๊ฒฝ์šฐ typeof๋กœ ๊ฐ’์˜ ํƒ€์ž…์„ ์ž˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, null๋งŒ object๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ ์— ์ฃผ์˜.

object์˜ ํ•˜์œ„ํƒ€์ž…

  • ํ•จ์ˆ˜์™€ ๋ฐฐ์—ด์€ object์˜ ํ•˜์œ„ํƒ€์ž…์ด๋‹ค.
  • ํ•จ์ˆ˜ ๊ฐ์ฒด์˜ length ํ”„๋กœํผํ‹ฐ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด ๊ฐ์ฒด์˜ length, ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด์š”์†Œ๋“ฑ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด์ธ์ง€ ์˜์‹ฌ๋œ๋‹ค๋ฉด...

๊ฐ’์€ ํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค

  • JS๋Š” ํƒ€์ž…๊ฐ•์ œ๊ฐ€ ์—†๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ™์€ ๋ณ€์ˆ˜์— ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ’์ด ์—†๋Š”(undefined) vs ์„ ์–ธ๋˜์ง€ ์•Š์€(undeclared)

JS์—์„  ๊ฐ’์ด ์—†๋Š”๊ณผ ์„ ์–ธ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋Š” ๋‹ค๋ฅธ ์ƒํƒœ์ด๋‹ค.

  • undefined: ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์—ˆ์œผ๋‚˜, ์•„๋ฌด๋Ÿฐ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜์Œ
  • undeclared: ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์ง€ ์•Š์•˜์Œ
  • ํ•˜์ง€๋งŒ, typeof ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” ๋‘˜ ๋‹ค undefined์ด๋‹ค,
  • typeof ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค ๋ณด๋‹ˆ, ์ •๋ง๋กœ ์„ ์–ธ๋˜๊ธด ํ•œ๊ฑด์ง€ ๋ถ€ํ„ฐ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.
  • ๊ทธ๋ž˜๋„ ์„ ์–ธ๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ’์„ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ๋˜, ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋ฉด,
    undeclared์˜ typeof์˜ ๊ฒฐ๊ณผ๊ฐ€ undefined์ธ ์ ์„ ์ด์šฉํ•  ์ˆ˜ ๋Š” ์žˆ๋‹ค.

์ •๋ฆฌ

typeof์™€ null

  • JS๋Š” typeof๋ผ๋Š” ์—ฐ์‚ฐ์ž๋กœ ๊ฐ’์˜ ํƒ€์ž…๋ช…์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทผ๋ฐ null์€ object๋กœ ์ถœ๋ ฅ๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค

object์˜ ํ•˜์œ„ํƒ€์ž…

  • function๊ณผ array๋„ object์˜ ํ•˜์œ„ํƒ€์ž…์ด๋‹ค. ๊ทธ๋ž˜์„œ ์–˜๋“ค๋„ ์†์„ฑ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

undeclared vs undefined

  • undeclared์™€ undefined๋Š” ์ ˆ๋Œ€ ๊ฐ™์ง€ ์•Š๋‹ค. undefined๋Š” ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ธ ๋ฐ˜๋ฉด,
    undeclared๋Š” ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„์ด์ง€, ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋‹ค.
    ๊ทผ๋ฐ ์ •์ž‘ JS๋ถ€ํ„ฐ ์ด ๋‘ ์šฉ์–ด๋ฅผ ๋Œ€์ถฉ ์„ž์–ด ์จ๋ฒ„๋ฆฐ๋‹ค. ์„ ์–ธ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ var is not defined๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • typeof๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์—ˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค.