undefined
์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ฉ์ ํ๋ค๋ณด๋ฉด ๋ฌด์ธ๊ฐ ์์ฌ์ฉ์ ์ผ์ด ์๊ธฐ๋ฉด undefined๋ฅผ ๋ง๋๊ฒ ๋ฉ๋๋ค. ์ด๋ ์์ง ์ด๊ธฐํํ์ง ์์ ๋ณ์๋ ์กด์ฌํ์ง ์๋(์๋๋ฉด ์ญ์ ํ) ์์ฑ, ํน์ ์กด์ฌํ์ง ์๋ ๋ฐฐ์ด ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฑ์์ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋์ฒด undefined ๋ ๋ญ๊น์? ์ฌ์ค ๊ทธ๋ฆฌ ๋ณต์กํ ๊ฑด ์๋๋๋ค. undefined ๋ ์์ง ๊ฐ์ ๊ฐ๊ณ ์์ง ์์ ๋ณ์์ ํ ๋น๋ ๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ๋ฌ๋ฆฌ ๋งํ๋ฉด undefined ๊ฐ์ ๋ณ์๊ฐ ์์ง ์ด๊ธฐํ๋์ง ์์๋ค๊ณ ์๋ ค์ฃผ๋ ๊ฒ๋๋ค. ์ด๋ฌํ undefined ๋ผ๋ ๊ฒ ์ด๋ค ์ธ๋ชจ๊ฐ ์์๊น์? undefined ๋ ์ด๋ค ๋ณ์, ์์ฑ, ๋ฐฐ์ด ์์ ๋ฑ์ด ๊ฐ์ ๊ฐ๊ณ ์๋์ง ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค๊ณ ํ ์ ์์ต๋๋ค.
๋ํ ์ฐ๋ฆฌ๊ฐ ์์์ผ ํ ๊ฒ์ค์ ํ๋๋ undefined ๊ฐ์ ํ์ undefined ์ ๋๋ค. ์ด์ ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ ผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. "์ด ๊ฐ์ ๊ฐ์ฒด๋, ์ซ์๋, ๋ฌธ์์ด๋, ๋ถ๋ฆฐํ๋ ์๋๋ค. ํ์ ์ ์ ์์ผ๋ ์๋ฃํ์ undefined๋ก ๋ง๋๋ ๊ฒ๋ ๋ฌธ์ ๊ฐ ์๋ค." ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋ฐ์ ๋ค์ฌ์ผ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ด์ํ ์์ญ ์ค ํ๋์ ๋๋ค.
undefined vs null
์ ๋ ์ด์ ๋๋ฌธ์ ํผ๋์ด ์ข ์ข ์๊ธฐ๊ธฐ๋ ํ์์ต๋๋ค. '๊ฐ์ฒด ์์'์ ์๋ฏธํ๋ ๊ฐ๋ ์ ๋ปํ๋ ์ธ์ด๊ฐ ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ชป๋ ๊ฒ๋ ์๋๋๋ค. document.getElementById() ๋ฉ์๋๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. getElementById() ๋ฉ์๋๋ DOM ์ ๋ํ ํด๋น ์์ด๋๋ฅผ ๊ฐ์ง ์์๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด null ์ ๋ฐํํฉ๋๋ค. null ์ ์ ํํ ์ด๋ค ๊ฑด๊ฐ์? ์ undefined ๊ฐ ์๋๋ผ null์ ๋ฐํํ๋๊ฑธ๊น์?
getElementById() ๋ฉ์๋๊ฐ ํ๋์ผ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๊ฒ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๋ฉด... ๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ "๊ทธ๋ฐ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ๋ฐํํ๊ฒ ์ง๋ง, ๋์๊ฒ ๊ทธ๋ฐ ๊ฐ์ฒด๊ฐ ์๋ค" ๊ณ ์๋ ค์ฃผ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐํํ๊ณ ์ถ์์ ๊ฒ๋๋ค. ๊ทธ๊ฒ ๋ฐ๋ก null ์
๋๋ค.
null ๊ฐ์ ๋ณ์์ ์ง์ ํ ๋นํ ์๋ ์์ต๋๋ค.
var obj = null;
์ฐ๋ฆฌ๊ฐ ์๊ฐํด ๋ด์ผํ ๊ฒ์ ๋ณ์์ null ๊ฐ์ ํ ๋นํ๋ค๋๊ฒ ์ด๋ค ์๋ฏธ์ธ๊ฐ ์ ๋๋ค. ๊ทธ๊ฑด ๋ฐ๋ก "์ด ๋ณ์์ ์ธ์ ๊ฐ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ ค๊ณ ํ๋๋ฐ, ์ง๊ธ์ ๊ฐ์ฒด๊ฐ ์๋ค." ๋ผ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ฐ ์๋ฏธ๋ก undefined ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๊น์? ํ๊ณ ๊ณ ๊ฐ๋ฅผ ๊ฐธ์ฐ๋ฑํ๊ณ ์๋ค๋ฉด ์ฌ๋ฌ๋ถ์ ์ง๊ธ๊น์ง์ ์ค๋ช ์ ์ ๋๋ก ์ดํดํ๊ณ ์๋ ๊ฒ๋๋ค. ์ฌ์ค ์ด ์ง๋ฌธ์ ๋ํ ๋๋ต์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ฃผ ์ด์ฐฝ๊ธฐ์ ๋์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ทจ์ง๋ ์๋ฌด๋ฐ ๊ฐ์ผ๋ก๋ ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ฅผ ๋ํ๋ด๋ ๊ฐ๊ณผ ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ๋ํ๋ด๋ ๊ฐ์ ๋ค๋ฅด๊ฒ ํํํ์๋ ๊ฒ๋๋ค. ์ฝ๊ฐ์ ์ค๋ณต๋๋ค๊ณ ์๊ฐ ํ ์ ์์ง๋ง ํ์ค์ด ๊ทธ๋ ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์์ผ ํ ๊ฒ์ ๊ทธ์ undefined ๊ณผ null ์ ์๋๋ฅผ ๊ธฐ์ตํ๊ณ ์์ผ๋ฉด ๋ฉ๋๋ค.
null ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ด์ผ ํ๋ ๊ณณ์ ๊ฐ์ฒด๊ฐ ์์์ ๋ํ๋ด๋ ๊ฒ์ด๊ณ ,
undefined ๋ ์ด๊ธฐํ ๋์ง ์์ ๋ณ์, ์กด์ฌํ์ง ์๋ ๊ฐ์ฒด์ ์์ฑ, ๋ฐฐ์ด ์์์ ๊ฐ์ด ํ ๋น๋์ด ์์ง ์์ ์์๋ฅผ ๋ํ๋ ๋๋ค.
์ซ์๊ฐ ์๋ ์ซ์ NaN
ํํ์ด ๋ถ๊ฐ๋ฅํ ์ซ์ ๊ฐ์ด ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ฐ ๊ฐ๋ค์ ํํํ ์ ์์ผ๋ฏ๋ก ๋์ NaN ์ด๋ผ๋ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. NaN ์ '์ซ์๊ฐ ์๋๋ผ๋ ๊ฒ(Not A Number)' ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด 0 / 0 ์ ์๊ฐํด๋ณด๋ฉด ์ด ๊ฐ์ ์ปดํจํฐ์์ ํํํ ์ ์๋ ๊ฐ์ด ๋ฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด ๊ฐ์ NaN ์ผ๋ก ํํํฉ๋๋ค.
์ด ๊ฐ์ ํํํ ์ ์๋ ๊ฐ์ ๋ํ๋ผ ๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๊ธฐ ์์ ๊ณผ ์ผ์นํ์ง ์๋ ์ ์ผํ ๊ฐ์ ๋๋ค. ์ด ๋ง์ด ๋ฌด์จ๋ง์ด๋๋ฉด NaN ๊ณผ NaN ์ ๋น๊ตํด๋ณด๋ฉด ๋ ๊ฐ์ ์ผ์นํ์ง ์์ต๋๋ค.
console.log(NaN == NaN); // false
์๋ง NaN์ ๋ค๋ฃจ๋ ์ผ์ด ์์ฃผ ์๊ธธ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ง๋ ์๊ฒ ์ง๋ง ์ด๋ ํ ํํ๋ ์ซ์๋ฅผ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ์์ ์ ํ๊ฒ ๋๋ค๋ฉด ์ด ๋ฌธ์ ๋ ๋ฐ์ ํ ์๋ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ๋์๋ ๊ฒฐ๊ณผ๊ฐ NaN ์ด ๋๋์ง ํ์ธํด์ผ ํ๋๋ฐ ์๋์ ๊ฒฝ์ฐ๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
if (myNum == NaN) {
myNum = 0;
}
์ผ์ค ์๋ ๋ถ์ด๋ผ๋ฉด ์ด๋ค ๋ณ์์ ๊ฐ์ด NaN์ธ์ง ๊ฒ์ฌํ๊ธฐ ์ํด ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ด๋ฉด ์ถฉ๋ถ ํ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ฒ ์ง๋ง, ์ด ์ฝ๋๋ ์๋ํ์ง ์์ต๋๋ค. ์ ๊ทธ๋ด๊น์? ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ NaN ์ ๊ทธ ์ด๋ค ๊ฐ๊ณผ๋ ์ผ์นํ์ง ์์ต๋๋ค. ์ฌ์ง์ด ์๊ธฐ ์์ ๊ณผ๋์. ๋ฐ๋ผ์ NaN๊ณผ ๋น๊ตํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
๋์ isNaN() ์ด๋ผ๋ ํน๋ณํ ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํด์ผ ํฉ๋๋ค.
if (isNaN(myNum)) {
myNum = 0;
}
isNaN() ํจ์๋ฅผ ์ฌ์ฉํ์ธ์. ์ด ํจ์๋ ์ธ์๋ก ๋ฐ์ ๊ฐ์ด ์ซ์๊ฐ ์๋๋ฉด true ๋ฅผ ๋ฐํํ๋๋ก ๋์ด ์์ต๋๋ค.
typeof NaN
NaN ์ด ์ซ์๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค๋ฉด ๋๋์ฒด ์ด๋ค ๊ฑธ ์๋ฏธํ๋ ๊ฑธ๊น์? '์ด๋ค ๊ฒ์ด ์๋๋ผ๋ ๊ฒ' ๋ณด๋ค๋ '์ด๋ค ๊ฒ' ์ด๋ผ๊ณ ์ด๋ฆ์ ๋ถ์ฌ ๋๋๊ฒ ์ฌ์ค ๋ ์ดํดํ๊ธฐ ์ข์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฝ๋๋ฅผ ํตํด์ ํ์ธ ํด ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
var num = 0 / 0;
console.log(typeof num); // number
์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ณด๋ค์ํผ NaN ์ ํ์ ์ ์ซ์ํ์ ๋๋ค. ์ซ์๊ฐ ์๋ ๊ฒ(Not A Number)์ ์๋ฏธํ๋ NaN ์ ์๋ฃํ์ด ์ซ์์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ NaN์ ์ด๋ฆ์ด ๋ถ์ ์ ํ๋ค๊ณ ์๊ฐํด์ผ ํฉ๋๋ค. '์ซ์๊ฐ ์๋ ๊ฒ' ์ด๋ผ๊ธฐ๋ณด๋ค๋ 'ํํ ํ ์ ์๋ ์ซ์'๊ฐ ์๋ง๋ ๋ ์ ์ ํ ์ฉ์ด ์ผ ๊ฒ๋๋ค.(NaN ์ ๊ทธ๋ฆฌ ์ ๋ง๋ ์ฝ์๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.)
์ ๋ฆฌ ํ์๋ฉด ์ฐ๋ฆฌ๋ NaN ์ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. "NaN ์ ์ซ์๊ฐ์ด์ง๋ง (์ ์ด๋ ์ปดํจํฐ๋ก๋) ํํํ ์ ์๋ ์ซ์๊ฐ์ด๋ค."
์ถ์ฒ: Head First JavaScript Programming
'๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ น JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS HTML, DOM (0) | 2021.01.14 |
---|---|
JS Object Properties (0) | 2021.01.10 |
function ์ฌ์ฉํ๊ธฐ (0) | 2020.12.25 |
JavaScript ๋์ ์์ฑํ๊ธฐ (0) | 2020.12.12 |
JavaScript is ... (0) | 2020.12.11 |