undefined & null

1. ๊ฐœ์š”

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ undefined์™€ null์ด๋‹ค. ์ด ๋‘๊ฐœ์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ๋“ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด ์ •๋ฆฌํ•œ๋‹ค.


2. undefined

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2๋‹จ๊ณ„์— ๊ฑฐ์ณ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  1. ์„ ์–ธ ๋‹จ๊ณ„: ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋“ฑ๋กํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ๋ณ€์ˆ˜์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฆฐ๋‹ค.

  2. ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„: ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ํ• ๋‹นํ•ด ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

์ฆ‰, undefined๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๋‹ค. ์ดํ›„ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ๋ณ€์ˆ˜์— ํŠน์ • ๊ฐ’์ด ํ• ๋‹น์ด ๋œ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž.

let foo;
foo; // undefined

let obj = {};
obj.prop; // undefined

foo ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋งŒ ๊ฑฐ์ณค์„ ๋ฟ ํŠน์ • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜๊ณ  obj ๊ฐ์ฒด์˜ ์†์„ฑ ์ค‘ prop๋˜ํ•œ ํŠน์ • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•„ undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜ ์„ ์–ธ์— ์˜ํ•ด ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฒ˜์Œ ํ• ๋‹น์ด ์ด๋ค„์งˆ ๋•Œ๊นŒ์ง€ ๋นˆ ์ƒํƒœ๋กœ ๋‚ด๋ฒ„๋ ค๋‘์ง€ ์•Š๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด undefined๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์ดํ›„ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด undefined๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.


3. null

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ null์€ ๋ณ€์ˆ˜์— ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋„์ ์œผ๋กœ ๋ช…์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜์— null์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜๊ฐ€ ์ด์ „์— ์ฐธ์กฐํ•˜๋˜ ๊ฐ’์„ ๋” ์ด์ƒ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

let name = 'hd';

name = null;

์—ฌ๊ธฐ์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ null ํƒ€์ž…์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง‘์  ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


4. ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ’์ด ์—†๋‹ค๋ผ๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„ ...? undefined vs null

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ’์ด ์—†๋‹ค๋ผ๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? undefined์ผ๊นŒ? null์ผ๊นŒ?

์ •๋‹ต์€ null์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” undefined๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค๋ฉด undefined์˜ ๋ณธ๋ž˜ ์ทจ์ง€์™€ ์–ด๊ธ‹๋‚ ๋ฟ๋”๋Ÿฌ ํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ฐ’์ด ์—†๋‹ค๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ€์žฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ์„ ๋• null๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋‹ค๋งŒ, ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ์†์„ฑ์˜ ๋ถ€์žฌ๋ฅผ null์„ ํ†ตํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋Š” ์ชฝ๋ณด๋‹ค๋Š”, ๊ทธ๋ƒฅ ๊ทธ ์†์„ฑ์„ ์ •์˜ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด ๊ฐ„ํŽธํ•˜๋ฏ€๋กœ ๋” ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.

// good, ํ”์น˜ ์•Š๋‹ค.
{
  name: 'HD';
  address: null;
}

// very Good
{
  name: 'HD';
}

// bad
{
  name: 'HD';
  address: undefined;
}

5. Conclusion

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


์ฐธ๊ณ 

๋„์„œ - ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive null๊ณผ undefined


๐Ÿ“… 2023-01-03

Last updated