๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Javascript

undefined ์ œ๋Œ€๋กœ ์•Œ๊ธฐ (2) null์˜ ๋“ฑ์žฅ

by joooing 2021. 1. 10.
๋ฐ˜์‘ํ˜•
1ํŽธ ๐Ÿ‘‰๐Ÿป undefined ์ œ๋Œ€๋กœ ์•Œ๊ธฐ (1) undefined? empty? ๐Ÿง

 

1ํŽธ์˜ ์ฒซ ๋ถ€๋ถ„์—์„œ, Javascript์—์„œ undefined ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ์šฐ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์—ˆ๋‹ค.

 

1. ์‚ฌ์šฉ์ž๊ฐ€ '๋ช…์‹œ์ '์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ
๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ '์—ฌ๊ธฐ์—๋Š” ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์„๊ฑฐ์•ผ'ํ•˜๊ณ  undefined๋ฅผ ํ†ตํ•ด ์•Œ๋ฆฌ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

2. Javascript ์—”์ง„์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ
Javascript ์—”์ง„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ์ง€์ •ํ•  ๊ฑฐ๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ๋Š”๋ฐ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ด ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์—์„œ undefined๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์ •์˜๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹ ๋˜ํ•œ ๋‹ค๋ฅด๋‹ค. ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฑด์ง€ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

 

1ํŽธ์—์„œ empty์™€ ๋น„๊ตํ–ˆ๋˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ, ๋จผ์ € 1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ undefined๊ฐ’์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ์— undefined๋Š” ๊ทธ ์ž์ฒด๋กœ '๊ฐ’(value)' ์ทจ๊ธ‰์„ ๋ฐ›๋Š”๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ํŒ๋‹จ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ’ ์ทจ๊ธ‰์„ ๋ฐ›์œผ๋ฉด ์†์„ฑ(property)๋„ ๊ฐ–๊ฒŒ๋˜๊ณ , ์ˆœํšŒ ๋Œ€์ƒ์—๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ 1ํŽธ์˜ ์˜ˆ์ œ(์•„๋ž˜ ๊ฐ€์ ธ์˜ด)์—์„œ์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ์†์„ฑ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” index์—๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

// 1ํŽธ ์˜ˆ์ œ
let arr1 = [undefined, 10]; 
arr1.forEach(function (val, i) {console.log(val, i);}; 
// undefined 0 
// 10 1

 

 

ํ•˜์ง€๋งŒ 2. Javascript ์—”์ง„์ด ์–ด์ฉ” ์ˆ˜ ์—†์ด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ข€ ๋‹ค๋ฅด๋‹ค. ์ด ๊ฒฝ์šฐ undefined๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์ด ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์–ด์ผ ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์†์„ฑ๋„, index๋„ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

์—ฌ๊ธฐ๊นŒ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด๊ฒŒ ๋‹น์—ฐํ•˜๋‹ค. ์™œ ๊ตณ์ด ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ์— undefined๋ฅผ ์“ฐ๋„๋ก ๋งŒ๋“ค์–ด์„œ, ์–ด๋–ค ๊ฒฝ์šฐ์—” ์ˆœํšŒ๊ฐ€ ๋˜๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—” ์ˆœํšŒ๊ฐ€ ์•ˆ๋˜๋Š” ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋งŒ๋“ค์—ˆ๋‚˜ ์‹ถ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์˜ˆ์™ธ ์ƒํ™ฉ๊นŒ์ง€ ๊ธฐ์–ตํ•ด์„œ undefined๋ฅผ ์จ์•ผํ• ๊นŒ..?ํ•˜๋Š” ๋งˆ์Œ์ด ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

 

null์˜ ๋“ฑ์žฅ

์ผ๋‹จ Javascript ์—”์ง„์ด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒํ™ฉ์€ ์šฐ๋ฆฌ ๋ง˜๋Œ€๋กœ ๋ง‰์„ ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์ธ ์šฐ๋ฆฌ๊ฐ€ undefined๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๊ฑด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง๋กœ '์ด ์ž๋ฆฌ๋Š” ๋น„์—ˆ์Œ'์„ ๋ช…์‹œํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? null์€ ๋ฐ”๋กœ ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. 

 

null ๋˜ํ•œ '๋น„์–ด์žˆ์Œ'์„ ์˜๋ฏธํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ• ๋‹นํ•œ undefined์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์›๋ž˜ undefined๊ฐ€ ํ˜ผ์ž ๋‹ค ํ•˜๋˜ ์ผ๋“ค ์ค‘ ์ผ๋ถ€๋ฅผ null์ด ๋Œ€์‹  ๋งก์•„์ค€ ๊ฒƒ์ด๋ผ๊ณ  ๋น„์œ ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค.

 

1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ
๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ '์—ฌ๊ธฐ์—๋Š” ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์„๊ฑฐ์•ผ'ํ•˜๊ณ  undefined๋ฅผ ํ†ตํ•ด ์•Œ๋ฆฌ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
๐Ÿ‘‰๐Ÿป null์ด ๋Œ€์ฒด

2. Javascript ์—”์ง„์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ
Javascript ์—”์ง„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ์ง€์ •ํ•  ๊ฑฐ๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ๋Š”๋ฐ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๐Ÿ‘‰๐Ÿป undefined

 

null ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋ ‡๊ฒŒ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ null์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผํ•  ์‚ฌํ•ญ์„ ์†Œ๊ฐœํ•˜๋ฉฐ ๊ธ€์„ ๋งˆ์น˜๋ ค๊ณ  ํ•œ๋‹ค. typeof๋ฅผ ์‚ฌ์šฉํ•ด null์˜ ํƒ€์ž…์„ ํ™•์ธํ•ด๋ณด๋ฉด objectํƒ€์ž…์ด๋ผ๊ณ  ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

let a = null;
console.log(typeof a);    //object

 

์ด ๋ถ€๋ถ„์€ Javascript ์ž์ฒด ๋ฒ„๊ทธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์–ด์ฉ” ์ˆ˜ ์—†์ด ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๊ฐ’์ด null์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” === ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•˜๋‚˜๋” ์ฃผ์˜ํ•  ์ ์€ == ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด undefined์™€ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ˜๋“œ์‹œ ์ •ํ™•ํ•œ ๋น„๊ต๋ฅผ ์œ„ํ•ด์„œ๋Š” === ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

console.log(a === null);         // true
console.log(a === undefined);    // false

console.log(a == null);         // true
console.log(a == undefined);    // true

 

 

์š”์•ฝ

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

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€