๐Ÿงก JavaScript

[JS] null๊ณผ undefined์˜ ์ฐจ์ด

Genie_. 2024. 12. 27. 00:37
728x90
๋ฐ˜์‘ํ˜•

๐Ÿงก JavaScript

1. ๊ธฐ๋ณธ ๊ฐœ๋…

undefined

์ •์˜

  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋งŒ ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ, JavaScript ์—”์ง„์ด ์ž๋™์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜๊ฐ€ return๋ฌธ ์—†์ด ์ข…๋ฃŒ๋˜๋ฉด, ์•”๋ฌต์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ƒํ™ฉ

  • ์•„์ง ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ธฐ ์ „๊นŒ์ง€๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์€ undefined์ž…๋‹ˆ๋‹ค.
let value;
console.log(value); // ์ถœ๋ ฅ: undefined

function doSomething() {
  // ์•„๋ฌด ๊ฐ’๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ undefined๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
}
console.log(doSomething()); // ์ถœ๋ ฅ: undefined

null

์ •์˜

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ "๊ฐ’์ด ์—†์Œ"์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ์˜๋„์ ์œผ๋กœ ๊ฐ์ฒด๋‚˜ ๋ณ€์ˆ˜์— “์•„์ง ๊ฐ’์ด ์—†์Œ”์„ ํ‘œ์‹œํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ƒํ™ฉ

  • ํŠน์ • ๋ณ€์ˆ˜๊ฐ€ ๋‚˜์ค‘์— ์–ด๋–ค ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋  ์˜ˆ์ •์ž„์„ ์•Œ๋ฆฌ๋ฉด์„œ, ํ˜„์žฌ๋Š” ๋น„์–ด์žˆ์Œ์„ ํ‘œํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ์—†๊ฑฐ๋‚˜, API ํ˜ธ์ถœ ๊ฒฐ๊ณผ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
let user = null;
console.log(user); // ์ถœ๋ ฅ: null

2. ๋น„๊ต ์—ฐ์‚ฐ์ž์—์„œ์˜ ์ฐจ์ด

๋А์Šจํ•œ ๋™๋“ฑ ๋น„๊ต(==)

  • null๊ณผ undefined๋Š” ๋А์Šจํ•œ ๋™๋“ฑ ๋น„๊ต ์‹œ ์„œ๋กœ ๋™๋“ฑํ•œ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.
console.log(null == undefined); // true

์—„๊ฒฉํ•œ ๋™๋“ฑ ๋น„๊ต(===)

  • ์—„๊ฒฉํ•œ ๋™๋“ฑ ๋น„๊ต์—์„œ๋Š” ์ž๋ฃŒํ˜•๊นŒ์ง€ ์ผ์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ๊ฐ’์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
console.log(null === undefined); // false

 

๋น„๊ต ๋ฐฉ์‹์˜ ์ฐจ์ด๋Š” ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋กœ์ง์„ ์ž‘์„ฑํ•  ๋•Œ ์˜๋„์น˜ ์•Š์€ ๋ฒ„๊ทธ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3. ์‚ฌ์šฉ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ ๋ฐ ์ฃผ์˜์ 

์˜๋„์ ์ธ ๊ฐ’ ํ• ๋‹น

  • undefined๋Š” ์ฃผ๋กœ JavaScript ์—”์ง„์ด ์ž๋™์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ด๋ฏ€๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” “์•„์ง ๊ฐ’์ด ์—†๋‹ค”๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์šฉ๋„๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • null์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ “๊ฐ’์ด ์—†์Œ”์„ ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ•  ๋•Œ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ ๋ณ€์ˆ˜์— “์•„์ง ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค”๋ผ๋Š” ์˜๋ฏธ๋กœ null์„ ํ• ๋‹นํ•ด, ๋‚˜์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ฑฐ๋‚˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

typeof ์—ฐ์‚ฐ์ž์™€ ์—ญ์‚ฌ์  ์ด์Šˆ

  • typeof null์˜ ๊ฒฐ๊ณผ๊ฐ€ "object"๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์€ JavaScript ์ดˆ๊ธฐ ์„ค๊ณ„ ์‹œ์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋‚จ์•„ ์žˆ๋Š” ์—ญ์‚ฌ์  ์œ ์‚ฐ์ž…๋‹ˆ๋‹ค.
    • ์ด ์ ์€ null์˜ ์‹ค์ œ ์šฉ๋„์™€๋Š” ๋ณ„๊ฐœ๋กœ, ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜

  • ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ, ์˜๋„์ ์œผ๋กœ “๊ฐ’์ด ์—†์Œ”์„ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด null์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ, ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” undefined ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

4. ํ•™์Šต ์ •๋ฆฌ ๋ฐ ํ™œ์šฉ ๋ฐฉ์•ˆ

ํ•ต์‹ฌ ์š”์•ฝ

  • undefined: ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ์€ ๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • null: ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ “๊ฐ’์ด ์—†์Œ”์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฐœ๋ฐœ ํ™œ์šฉ

  • ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •, API ์‘๋‹ต ์ฒดํฌ, ์กฐ๊ฑด๋ฌธ ์ฒ˜๋ฆฌ ๋“ฑ์—์„œ null๊ณผ undefined์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉด, ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•