๐Ÿ“’ ์˜ต์…”๋„ ์ฒด์ด๋‹, null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž

zooyahoยท2022๋…„ 7์›” 16์ผ
0
post-thumbnail

โ— ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž(?.)

ES11์—์„œ ๋„์ž…๋œ ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž(?.)๋Š” ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.

๐Ÿ‘พ#01

let el = { value: 'value'};
console.log(el?.value); // value

el = { };
console.log(el?.value); // undefined

๐Ÿ’ก ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ null ๋˜๋Š” ubdefined๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๐Ÿ‘พ#02

let el = null;
console.log(el?.value); // undefined

๐Ÿ’ก 0 ๊ณผ ''์€ ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋  ๋•Œ๋„ ์žˆ๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ, ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž &&์„ ์‚ฌ์šฉํ•œ ๋‹จ์ถ•ํ‰๊ฐ€ ๋ณด๋‹ค๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๐Ÿ‘พ#03

let str = '';
console.log(str && str.length); // ''
console.log(str?.length); // 0

โ— null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž(??)

ES11์—์„œ ๋„์ž…๋œ null๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??๋Š” ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ’ก ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๐Ÿ‘พ#01

let a;
let val = a ?? 'default'
console.log(val); // default

๐Ÿ’ก 0 ๊ณผ ''์ด ์œ ํšจํ•œ ๊ฐ’์ผ ๊ฒฝ์šฐ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(||)๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ถ•ํ‰๊ฐ€ ๋ณด๋‹ค๋Š” null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž(??)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๐Ÿ‘พ#02

let a = 0;
let val;

val = a || 'default';
console.log(val); // default
val = a ?? 'default';
console.log(val); // 0

์ฐธ๊ณ ) ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive

profile
์ฆ๊ฒ๊ฒŒ ๊ฐœ๋ฐœํ•˜์ž ์ฅฌ์•ผํ˜ธ๐Ÿ‘ป

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