Truthy / Falsy
Last updated
Last updated
์๋ฐ์คํฌ๋ฆฝํธ์์๋ boolean ๊ฐ์ ๊ธฐ๋ํ๋ ๊ตฌ๋ฌธ์์ ๊ฐ์ด true/false ์ค ์ด๋ค ๊ฐ์ ๊ฐ์ง๋๊ฐ์ ๋ฐ๋ผ truthy / falsy ๋ก ๊ตฌ๋ถํ๋ค. ์ฝ๊ฒ ๋งํด if ๋ฌธ๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์์ boolean์ด ์๋ ๊ฐ์ด ์กฐ๊ฑด์ ๋ค์ด๊ฐ์๋ ์ด๋ป๊ฒ ํ๋จํ๋๋ ๋ฅผ ๋ปํ๋ค.
truthy ๊ฐ์ falsy๋ฅผ ์ ์ธํ ๋ชจ๋ ๊ฐ ์ด๊ธฐ ๋๋ฌธ์ falsy ๊ฐ์ ํฌ์ปค์ค๋ฅผ ๋ง์ถฐ ์ดํด๋ณด์.
์๋ฐ์คํฌ๋ฆฝํธ์๋ ์ด 6๊ฐ์ง์ falsy ๊ฐ์ด ์กด์ฌํ๋ค. ์ด ์ค 3๊ฐ๋ false, 0, "" (๋น ๋ฌธ์์ด)๋ก ๋งค์ฐ ์ต์ํ ํค์๋์ด๊ธฐ ๋๋ฌธ์ ๋๋จธ์ง 3๊ฐ์ ๋ํด ์ค์ ์ ์ผ๋ก ์ดํด๋ณด๋ ค ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์์๊ฐ ์ค ํ๋์ธ null์ด๋ค. ์ ์๋ฅผ ์ดํด๋ณด๋ฉด ์ด๋ ๊ฐ์ด ์๋์ ์ผ๋ก ๋น์ด์์์ ๋ํ๋ด๋ ๊ฐ์ด๋ค ๋ผ๊ณ ์ฐ์ฌ์๋ค. ๋ณดํต์ ๊ทธ๋ฅ ๊ฐ์ด ์๋ค ๋ผ๋ ์๋ฏธ๋ก ์ดํดํ๊ณ ์์ง๋ง ์ ํํ ๋งํ๋ฉด ์ฐธ์กฐํ๋ ๋ ํผ๋ฐ์ค ๋ณ์์ ์ฃผ์๊ฐ์ด ์๋ค ๋ผ๋ ์๋ฏธ์ด๋ค.
reference variable : ๋ฉ๋ชจ๋ฆฌ ์์ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์
โก๏ธ ์ฆ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ๋ปํ๋ค.
์ฆ, ์ ์ฝ๋์ ์กฐ๊ฑด์ inputRef ์ ํ์ฌ ๋์์ ์ฃผ์๊ฐ์ด ์๋ค๋ฉด, ์ฆ ํ์ฌ ํด๋น ref๊ฐ ์ด๋ค element๋ ์ฐธ์กฐํ๊ณ ์์ง ์๋ค๋ฉด ์ด๋ผ๋ ์๋ฏธ๋ก ํด์๋๋ค.
์ฌ๊ธฐ์ ์ ์ํ ๋ถ๋ถ์ ์๋ค ๋ผ๋ ๋จ์ด์ธ๋ฐ null์ ํ์ฌ ํด๋น ๋ณ์์ ์ฃผ์๊ฐ์ด ์๋ค ๋ผ๋ ์๋ฏธ์ด์ง ์ฃผ์๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ์๋ค ๋ผ๋ ์๋ฏธ๊ฐ ์๋๋ค. ๋ฐ๋ผ์ ์ธ์ ๋ ์ง ์ฃผ์๊ฐ์ด ํ ๋น๋์ด ๊ฐ์ด ์ฐธ์กฐ๋ ์ ์๋ค.
์ถ๊ฐ์ ์ผ๋ก null์ typeof ํค์๋๋ก ํ์ธํด๋ณด๋ฉด "object" ๊ฐ ๋์ค๋๋ฐ ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ๋ช ํ ๊ตฌํ ๋ฒ๊ทธ ์ค ํ๋์ด๋ค.
๋จ์ด ๊ทธ๋๋ก ํด์ํ๋ฉด "์ ์๋์ง ์์ / ์์ ์๋" ๋ฑ์ ๋ป์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ undefined๋ ๊ฐ์ด ํ ๋น๋์ง ์์ ์ํ ๋ฅผ ์๋ฏธํ๋ค. "์ด ๊ทธ๋ฌ๋ฉด null์ด๋ ๋ญ๊ฐ ๋ค๋ฅด์ง?" ๋ผ๋ ์๋ฌธ์ด ์๋์ผ๋ก ์๊ธฐ๋๋ฐ ๋ ๊ฐ์ ์ฐจ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๋ฐ์ํ๋ค.
undefined๋ ๋ณ์๊ฐ ์ด๊ธฐํ ๋์ง ์์ ๊ฒฝ์ฐ ์ฒ๋ผ ์๋์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ ๋นํด์ฃผ๋ ๊ฐ์ด๋ค. ํธ์ด์คํ ์ ์๊ฐํด๋ณด์. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ต์ด์ ๋ณ์ ์ ์ธ๋ถ๋ฅผ ํ์ธํ์ฌ ๋ชจ๋ undefined๋ก ์ด๊ธฐํ ์ํจ๋ค. ์ด๋, undefined๋ก ์ด๊ธฐํ๋ ๋ณ์ ์์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ง๋ง ๊ฐ์ด ์์ง ์์ผ๋ฉฐ ๊ทธ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ์๋ค.
์ด์ ๋ฐํด null์ ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. null๋ก ์ ์ธ๋ ๋ณ์๋ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ด ์์ง๋ง ์ถํ์ ์ฃผ์๊ฐ์ ํ ๋นํด์ผ ํ๋ ๊ฐ์ฒด ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์ undefined ๋ณด๋ค ์๋์ ์ผ๋ก ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค.
์ ๋ฆฌํ์๋ฉด
undefined
๋ ์์ง ๊ฐ์ด ํ ๋น๋์ง ์์ ์ํ๋ฅผ ๋ํ๋ผ๋, null์ ์๋์ ์ผ๋ก ๊ฐ์ด ์๋ค๋ผ๋ ๊ฒ์ ๋ํ๋ผ๋ ์ฌ์ฉํ๋ค.
NaN์ Not a Number
์ ์ฝ์๋ก ๋จ์ด ๊ทธ๋๋ก ์ซ์๊ฐ ์๋ ๊ฐ์ด๋ผ๋ ๋ป์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ ์ซ์๊ฐ ์๋ ๊ฐ์ ๋ํ๋ด๋ NaN์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฑธ๊น?
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ธ ์ด๋ฒคํธ๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๋ค์ ์ ๋ ฅ๊ฐ, ํด๋ฆญ ์ด๋ฒคํธ ๋ฑ์ ์ฌ๋ฌ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๊ฐ๋ฐ๋์๋ค.
์ฌ์ฉ์๊ฐ ์ ํ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ ์ ๋ ฅํผ์ ์๊ฐํด๋ณด์. ๋น์ฐํ๊ฒ๋ ์ซ์๋ง ์ ๋ ฅ๋์ด์ผ ํ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ ์ ๋ฐ์ดํธ ๋๋ input ๊ฐ์ ํํ๋ string์ด์ง๋ง ์ค์ ๋ก ํ์ธํด์ผํ๋๊ฒ์ ์ด string์ number๋ก ํ๋ณํํ ๊ฐ์ธ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์ "jsk123" ๋ฑ์ ๊ฐ์ ํ๋ณํ ํ๊ฒ ๋๋ฉด
์ด๋ ๊ฒ NaN์ด ์ถ๋ ฅ๋๋ค. ์ฆ, ์ซ์๊ฐ ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ด์ธ์๋ ๋ฌธ์์ด๊ณผ ์ซ์๋ฅผ ์ฐ์ฐํ๋ ค๊ณ ํด๋ NaN์ด ์ถ๋ ฅ๋๋ค.
ํน์ดํ์ ์
์ด๋ ๊ฒ NaN์ด ์ถ๋ ฅ๋๋ ๋ณ์๋ฅผ typeof ํค์๋๋ก ํ์ธํด๋ณด๋ฉด number๋ก ๋์จ๋ค. ์ด์ ๋ ๋ณ์๊ฐ ์ซ์๋ก ๋ณํ์ ๋์์ผ๋ ๋ณํ๋ ๊ฐ์ด ์ซ์๊ฐ ์๋๋ค ๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํจ์ด๋ค.