โœ๐Ÿป [Code Camp_TIL] 5์ผ์ฐจ: ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง(&&, ์‚ผํ•ญ์—ฐ์‚ฐ์ž, Optional Chaining)

code_Jยท2023๋…„ 3์›” 20์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
7/41
post-thumbnail

์กฐ๊ฑด๋ถ€๋ Œ๋”๋ง


์šฐ๋ฆฌ๊ฐ€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์•„์˜ค๋Š” ๋™์•ˆ ํ™”๋ฉด์— ๊ทธ๋ ค์งˆ ๋ฐ์ดํ„ฐ๊ฐ€ undefined์ด๋ฏ€๋กœ ์ฒซ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๋Š” ์‹œ๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ™”๋ฉด์— ๋ฏธ๋ฆฌ ๊ทธ๋ ค๋†“์„ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๊ทธ๋ ค๋†“๊ณ  ๋กœ๋”ฉ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ๋งˆ์ € ๊ทธ๋ ค์ฃผ๋Š” ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•œ๋‹ค.

์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์—๋Š” && ์—ฐ์‚ฐ์ž, ์‚ผํ•ญ์—ฐ์‚ฐ์ž, optional-chaining์ด ์žˆ๋‹ค.


์‚ผํ•ญ ์—ฐ์‚ฐ์ž

data ? data.fetchProfile : undefined

data๊ฐ€ ์žˆ๋‹ค๋ฉด data.fetchProfile ๊ฐ’์„, ์—†๋‹ค๋ฉด undefined๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ๋ฅผ ๋ชจ๋‘ ์ ์–ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ && ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค.



&& ์—ฐ์‚ฐ์ž

data ? data.fetchProfile

์˜๋ฏธ๋Š” ์œ„์—์„œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋™์ผํ•˜๋‹ค. && ์—ฐ์‚ฐ์ž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , data๊ฐ€ ์ฐธ์ด๋ฉด data.fetchProfile๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.



|| ์—ฐ์‚ฐ์ž

data || data.fetchProfile

&& ์—ฐ์‚ฐ์ž์™€ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์•ž์˜ ๊ฐ’์ด ๊ฑฐ์ง“(false)์ผ ๋•Œ ๋’ค์˜ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค. ์ฆ‰ data๊ฐ€ ๊ฑฐ์ง“์ด๋ฉด data.fetchProfile์„ ๋ณด์—ฌ์ค€๋‹ค. ๋งŒ์•ฝ data๊ฐ€ ์ฐธ์ด๋ฉด data๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. || ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ฒ˜๋ฆฌํ• ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.



nullish-coalescing

data ?? data.fetchProfile

data๊ฐ€ null์ด๋‚˜ undefined ์ผ๋•Œ data.fetchProfile ๋ณด์—ฌ์ค€๋‹ค. data๊ฐ€ 0์ด๊ฑฐ๋‚˜ false ๋“ฑ์˜ ๊ฑฐ์ง“๊ฐ’์ธ ๊ฒฝ์šฐ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค! ๊ธฐ๋ณธ์ ์ธ ์˜๋ฏธ๋Š” || ์—ฐ์‚ฐ์ž์™€ ์œ ์‚ฌํ•˜๋‚˜ nullish-coalescing์€ null์ด๋‚˜ undefined๋งŒ ํ•ด๋‹นํ•œ๋‹ค๋Š” ๊ฒƒ์— ์œ ์˜ํ•˜์ž!



Optional-Chaining

Optional-Chaining์€ && ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ๋ฉด์„œ ๊ธธ์–ด์กŒ๋˜ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž๋‹ค.

data?.fetchProfile

? ์—ฐ์‚ฐ์ž ์•ž ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ€ undefined๋‚˜ null ์ด๋ผ๋ฉด undefined๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์‚ผํ•ญ์—ฐ์‚ฐ์ž, && ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

optional chaining์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ undefined๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ™”๋ฉด์— ๋„์›Œ์ค€๋‹ค(๋ฆฌ๋ Œ๋”๋ง).



profile
Web FE ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ

0๊ฐœ์˜ ๋Œ“๊ธ€