Truthy / Falsy

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” boolean ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ตฌ๋ฌธ์—์„œ ๊ฐ’์ด true/false ์ค‘ ์–ด๋–ค ๊ฐ’์„ ๊ฐ€์ง€๋Š”๊ฐ€์— ๋”ฐ๋ผ truthy / falsy ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด if ๋ฌธ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์—์„œ boolean์ด ์•„๋‹Œ ๊ฐ’์ด ์กฐ๊ฑด์— ๋“ค์–ด๊ฐ”์„๋•Œ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•˜๋А๋ƒ ๋ฅผ ๋œปํ•œ๋‹ค.

truthy ๊ฐ’์€ falsy๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’ ์ด๊ธฐ ๋•Œ๋ฌธ์— falsy ๊ฐ’์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถฐ ์‚ดํŽด๋ณด์ž.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์ด 6๊ฐ€์ง€์˜ falsy ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค. ์ด ์ค‘ 3๊ฐœ๋Š” false, 0, "" (๋นˆ ๋ฌธ์ž์—ด)๋กœ ๋งค์šฐ ์ต์ˆ™ํ•œ ํ‚ค์›Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ 3๊ฐœ์— ๋Œ€ํ•ด ์ค‘์ ์ ์œผ๋กœ ์‚ดํŽด๋ณด๋ ค ํ•œ๋‹ค.

null

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์›์‹œ๊ฐ’ ์ค‘ ํ•˜๋‚˜์ธ null์ด๋‹ค. ์ •์˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์–ด๋А ๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ๋น„์–ด์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๋‹ค ๋ผ๊ณ  ์“ฐ์—ฌ์žˆ๋‹ค. ๋ณดํ†ต์€ ๊ทธ๋ƒฅ ๊ฐ’์ด ์—†๋‹ค ๋ผ๋Š” ์˜๋ฏธ๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ์ฐธ์กฐํ•˜๋Š” ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์ด ์—†๋‹ค ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

reference variable : ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜

โžก๏ธ ์ฆ‰ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค.

const inputRef = useRef<HTMLInputElement>()
if (inputRef.current === null){
    ~~~
}

์ฆ‰, ์œ„ ์ฝ”๋“œ์˜ ์กฐ๊ฑด์€ inputRef ์˜ ํ˜„์žฌ ๋Œ€์ƒ์˜ ์ฃผ์†Œ๊ฐ’์ด ์—†๋‹ค๋ฉด, ์ฆ‰ ํ˜„์žฌ ํ•ด๋‹น ref๊ฐ€ ์–ด๋–ค element๋„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ด๋ผ๋Š” ์˜๋ฏธ๋กœ ํ•ด์„๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์œ ์˜ํ•  ๋ถ€๋ถ„์€ ์—†๋‹ค ๋ผ๋Š” ๋‹จ์–ด์ธ๋ฐ null์€ ํ˜„์žฌ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์ด ์—†๋‹ค ๋ผ๋Š” ์˜๋ฏธ์ด์ง€ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ์—†๋‹ค ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ธ์ œ๋“ ์ง€ ์ฃผ์†Œ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ๊ฐ’์ด ์ฐธ์กฐ๋ ์ˆ˜ ์žˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ null์„ typeof ํ‚ค์›Œ๋“œ๋กœ ํ™•์ธํ•ด๋ณด๋ฉด "object" ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์œ ๋ช…ํ•œ ๊ตฌํ˜„ ๋ฒ„๊ทธ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

undefined

๋‹จ์–ด ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•˜๋ฉด "์ •์˜๋˜์ง€ ์•Š์€ / ์•Œ์ˆ˜ ์—†๋Š”" ๋“ฑ์˜ ๋œป์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ undefined๋Š” ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. "์–ด ๊ทธ๋Ÿฌ๋ฉด null์ด๋ž‘ ๋ญ๊ฐ€ ๋‹ค๋ฅด์ง€?" ๋ผ๋Š” ์˜๋ฌธ์ด ์ž๋™์œผ๋กœ ์ƒ๊ธฐ๋Š”๋ฐ ๋‘ ๊ฐ’์˜ ์ฐจ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

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

์ด์— ๋ฐ˜ํ•ด null์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. null๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์ด ์—†์ง€๋งŒ ์ถ”ํ›„์— ์ฃผ์†Œ๊ฐ’์„ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด ํฌ์ธํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— undefined ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด undefined๋Š” ์•„์ง ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ผ๋•Œ, null์€ ์˜๋„์ ์œผ๋กœ ๊ฐ’์ด ์—†๋‹ค๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ผ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

NaN

NaN์€ Not a Number์˜ ์•ฝ์ž๋กœ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์ด๋ผ๋Š” ๋œป์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” NaN์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฑธ๊นŒ?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ ์ธ ์ด๋ฒคํŠธ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๋“ค์˜ ์ž…๋ ฅ๊ฐ’, ํด๋ฆญ ์ด๋ฒคํŠธ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ž…๋ ฅํผ์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์ˆซ์ž๋งŒ ์ž…๋ ฅ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ์‹œ ์—…๋ฐ์ดํŠธ ๋˜๋Š” input ๊ฐ’์˜ ํ˜•ํƒœ๋Š” string์ด์ง€๋งŒ ์‹ค์ œ๋กœ ํ™•์ธํ•ด์•ผํ•˜๋Š”๊ฒƒ์€ ์ด string์„ number๋กœ ํ˜•๋ณ€ํ™˜ํ•œ ๊ฐ’์ธ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— "jsk123" ๋“ฑ์˜ ๊ฐ’์„ ํ˜•๋ณ€ํ™˜ ํ•˜๊ฒŒ ๋˜๋ฉด

let test = "jsk123"
console.log(Number(test)) // NaN

์ด๋ ‡๊ฒŒ NaN์ด ์ถœ๋ ฅ๋œ๋‹ค. ์ฆ‰, ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™ธ์—๋„ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฅผ ์—ฐ์‚ฐํ•˜๋ ค๊ณ  ํ•ด๋„ NaN์ด ์ถœ๋ ฅ๋œ๋‹ค.

ํŠน์ดํ•œ์ ์€

console.log(typeof Number(test)) // number

์ด๋ ‡๊ฒŒ NaN์ด ์ถœ๋ ฅ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ typeof ํ‚ค์›Œ๋“œ๋กœ ํ™•์ธํ•ด๋ณด๋ฉด number๋กœ ๋‚˜์˜จ๋‹ค. ์ด์œ ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜์€ ๋˜์—ˆ์œผ๋‚˜ ๋ณ€ํ™˜๋œ ๊ฐ’์ด ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋‹ค ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•จ์ด๋‹ค.

Last updated