undefined ์ ๋๋ก ์๊ธฐ (2) null์ ๋ฑ์ฅ
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์ ์ฐ์!