ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

Optional Chaining ์—ฐ์‚ฐ์ž (?.)  ES11 (ECMAScript 2020)

๊ฐ์ฒด์˜ Property์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ

undefined ๋˜๋Š” null์ธ ๊ฒฝ์šฐ

์—๋Ÿฌ๋ฅผ ๋˜์ง€๋Š” ๋Œ€์‹ , undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

์ฆ‰, nullish๊ฐ’ (null ๋˜๋Š” undefined) ์œผ๋กœ ์ธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๊ฐ„๋‹จํ•œ ํ‘œํ˜„์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์™œ Optional Chaining์„ ์‚ฌ์šฉํ• ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด adventurer ๊ฐ์ฒด ์•ˆ์— ์ค‘์ฒฉ๋œ(nested) cat ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

nullish ๊ฐ’์„ ์ฒดํฌํ•˜๋ฉด์„œ(null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ)

adventurer ๊ฐ์ฒด์— ์ค‘์ฒฉ๋œ 'cat ๊ฐ์ฒด์˜ name'์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

1๏ธโƒฃ ์•„๋ž˜์™€ ๊ฐ™์ด && ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด cat์ด null ๋˜๋Š” undefined์ธ์ง€ ์ฒดํฌํ•˜๊ณ , cat.name์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•

 

const catName = adventurer && adventurer.cat && adventurer.cat.name;

2๏ธโƒฃ Optional Chaining ์ด์šฉ 

const catName = adventurer?.cat?.name;

์œ„ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋น„๊ตํ•ด๋ณด๋ฉด Optional Chaining์ด ์™œ ์“ฐ์ด๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋งค์šฐ ์งง๊ณ , ๊ฐ„๋‹จํ•˜๊ฒŒ Chaining์„ ํ†ตํ•ด null ๋˜๋Š” undefined์— ๋Œ€ํ•œ ํ•ธ๋“ค๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค!

ํŠนํžˆ, ๊ฐ์ฒด์— ์–ด๋–ค property๊ฐ€ ์š”๊ตฌ๋˜๋Š”์ง€, ์กด์žฌํ•˜๋Š”์ง€์— ๋Œ€ํ•ด  guarantee ๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ(null ๋˜๋Š” undefined ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ) ํ•ด๋‹น property์— ์ ‘๊ทผํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


Syntax

obj.val?.prop
obj.val?.[expr]
obj.func?.(args)

 

 

 

์ฐธ๊ณ  ์ถœ์ฒ˜: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ
250x250