๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ ๊ธฐ์ˆ  ๋ฉด์ ‘/etc.

undefined์™€ null์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ๋ณด์„ธ์š”.

by Dev. Ella 2023. 3. 5.

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป undefined์™€ null์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ๋ณด์„ธ์š”.

์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋ถˆ๋ถ„๋ช…ํ•œ ๊ฐ’์œผ๋กœ ์ถ”์ •๋˜๋Š” undefined์™€ null์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋‘˜์˜ ์˜๋ฏธ๋Š” ๊ฐ๊ฐ ๋ฌด์—‡์ด๋ฉฐ, ๊ฐ๊ฐ ์–ด๋–จ ๋•Œ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ์ฐจ์ด์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

 

๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด ,

undefined๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฉฐ, null์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นˆ ๊ฐ’์„ ํ• ๋‹นํ•œ ์ƒํƒœ ์ž…๋‹ˆ๋‹ค.

 

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

 

undefined : "๋ชฐ๋ผ~ ๐Ÿ˜—"

1. ์›์‹œ๊ฐ’(Primitive Type)์œผ๋กœ, ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๋ฅผ ์•”์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

// ์ •์˜๋˜์ง€ ์•Š๊ณ  ์ดˆ๊ธฐํ™”๋œ ์ ๋„ ์—†๋Š” x
x; // ReferenceError: foo is not defined

2. ์„ ์–ธ ํ›„ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ํ˜น์€ ๊ฐ’์ด ์ฃผ์–ด์ง€์ง€ ์•Š์€ ์ธ์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. 

var x; // ๋ณ€์ˆ˜ x์— ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ์„ ์–ธํ•œ๋‹ค๋ฉด
console.log ('value of x is', x) // value of x is undefined

var x = 1; // ๋งŒ์•ฝ ๋ณ€์ˆ˜ x์— 1์„ ํ• ๋‹นํ•˜๋ฉฐ ์„ ์–ธํ•œ๋‹ค๋ฉด
console.log ('value of x is', x); // value of x is 1

3. undefined์˜ ํƒ€์ž…์€ "undefined"๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

typeof undefined // 'undefined'

4. ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ returnํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋„ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

null : "์—†์–ด! โœ‹๐Ÿป"

1.์›์‹œ๊ฐ’(Primitive Type)์œผ๋กœ, ์–ด๋–ค ๊ฐ’์ด ๋น„์–ด์žˆ์Œ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. 

// ์กด์žฌํ•˜์ง€๋งŒ ๊ฐ’์ด๋‚˜ ์ž๋ฃŒํ˜•์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” x
var x = null; 
x; // null

2. Boolean ์—ฐ์‚ฐ์—์„œ๋Š” false๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. 

!null // true: false์˜ ๋ฐ˜๋Œ€

3. null์˜ ํƒ€์ž…์€ "๊ฐ์ฒด"๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

typeof null // 'object'

 

๊ทธ ์™ธ ์ถ”๊ฐ€ ์„ค๋ช…

1. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ฐพ๋Š” ํ•จ์ˆ˜์ธ isNaN()์„ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ด ํ•จ์ˆ˜๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด(Not a Number) True๋ฅผ, ์ˆซ์ž์ด๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. isNaN('456') ๊ณผ ๊ฐ™์€ ๋ฌธ์žํ˜• ์ˆซ์ž๋„ ์ˆซ์ž๋กœ ์ธ์‹๋˜์–ด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ˆซ์ž๋ฌธ๋งฅ์—์„œ๋Š” null์€ 0์œผ๋กœ undefined๋Š” NaN์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

isNaN (1) // false: ์ˆซ์ž๋‹ค

isNaN(1 + null)      // false: ์ˆซ์ž๋‹ค
isNaN(1 + undefined) // true: ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋‹ค

2. null๊ณผ undefined๋ฅผ ์—„๊ฒฉํ•œ ๋น„๊ต์—ฐ์‚ฐ์ž(์ผ์น˜์—ฐ์‚ฐ์ž: ===)๋กœ ๋น„๊ตํ•˜๋ฉด false, ๋Š์Šจํ•œ ๋น„๊ต์—ฐ์‚ฐ์ž(๋™๋“ฑ์—ฐ์‚ฐ์ž: ==)๋กœ ๋น„๊ตํ•˜๋ฉด true๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

null === undefined   // false
null == undefined   // true

null === null        // true
null == null         // true

 

 

๐Ÿ“Ž ๋‚ด์šฉ ์ฐธ์กฐ

- MDN : undefined

- MDN : null

- Blog: undefined์™€ null์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”

๋Œ“๊ธ€