Javascript

[JS] "?." μ˜΅μ…”λ„ 체이닝 μ—°μ‚°μž (Optional chaining)

Alexim 2022. 8. 3. 23:42

πŸ“— Optional Chaning

?. μ•žμ˜ 평가 λŒ€μƒμ΄ undefinedλ‚˜ null이면 평가λ₯Ό λ©ˆμΆ”κ³  undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

πŸ“— μ–Έμ œ μ‚¬μš©ν•˜λ‚˜?

1. μžˆμ„ μˆ˜λ„ 없을 μˆ˜λ„ μžˆλŠ” 객체의 속성을 μ‘°νšŒν•  λ•Œ

말이 μ΄μƒν•˜κ²Œ λ“€λ¦¬κ² μ§€λ§Œ μ˜΅μ…”λ„ 체이닝은 이런 κ²½μš°μ— ꡉμž₯히 μœ μš©ν•˜κ²Œ μ‚¬μš©λœλ‹€.

μ˜΅μ…”λ„ 체이닝 μ—°μ‚°μžκ°€ 없을 λ•ŒλŠ” 객체에 속성이 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œ "&&" μ—°μ‚°μžλ₯Ό 썼닀. 

 

let user = {};

user 객체 μ•ˆμ—μ„œ user.address.street 을 μ‘°νšŒν•˜μ—¬μ•Ό ν•˜λŠ”λ° μ£Όμ†Œ 정보가 μ—†λŠ” userκ°€ μžˆλ‹€κ³  ν•  λ•Œ

κ·Έλƒ₯ μ‘°νšŒν•œλ‹€λ©΄ λ°”λ‘œ νƒ€μž…μ—λŸ¬κ°€ λ°œμƒν•  것이닀.

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ 

console.log(user && user.address && user.address.street);

이런 μ‹μœΌλ‘œ ν™•μΈν•˜λ©΄μ„œ μ ‘κ·Όν•˜λŠ” 방법을 썼닀.

 

μ˜΅μ…”λ„ 체이닝이 λ§Œλ“€μ–΄μ§€κ³  λ‚˜μ„œλŠ”

console.log(user?.address?.street);

μ΄λ ‡κ²Œ μ ‘κ·Όν•  수 μžˆκ²Œλ˜μ—ˆλ‹€. μ˜΅μ…”λ„ μ²΄μ΄λ‹μœΌλ‘œ μ ‘κ·Όν•˜λ©΄ νƒ€μž…μ—λŸ¬κ°€ λ‚˜μ§€ μ•Šκ³  값이 μ—†λŠ” κ²½μš°μ—λŠ” undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€.


1-2. 

λ‚˜μ˜ 경우 api 값을 뢈러올 λ•Œ μ‚¬μš©ν–ˆλ‹€. (νŠœν† λ¦¬μ–Ό λ³΄λŠ”μ€‘..)

        <img
          src={channelIcon?.url} // ? 이 λ¬ΌμŒν‘œ 뭐지
          alt='channel img'
        />

channelIcon이 apiμ—μ„œ 뢈러온 값이고 값이 없을 경우λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œ μ˜΅μ…”λ„ 체이닝을 μ‚¬μš©ν•œ 것 κ°™λ‹€. 

(νŠœν† λ¦¬μ–Όμ—μ„œ μ € λ¬ΌμŒν‘œλ₯Ό 봀을 λ•Œ μ˜€νƒ€μΈμ€„γ…Žγ…Ž)


2. μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 수 μžˆλŠ” λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ (ν•¨μˆ˜μ˜ 호좜)

let result = someInterface.customMethod?.();

λ§Œμ•½ 속성에 ν•΄λ‹Ή 이름이 μžˆμ§€λ§Œ ν•¨μˆ˜κ°€ μ•„λ‹ˆλΌλ©΄ ?. 의 μ‚¬μš©μ€ μ—¬μ „νžˆ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

μ˜΅μ…”λ„ 체이닝은 ?. 이전 λΆ€λΆ„λ§Œ ν™•μΈν•˜κΈ° λ•Œλ¬Έμ— μ € 예제의 경우 someInterface μžμ²΄λŠ” nullμ΄λ‚˜ undefinedκ°€ μ•„λ‹ˆμ–΄μ•Ό ν•œλ‹€. λ§Œμ•½ null λ˜λŠ” undefined 값이 λ‚˜μ˜¬ 수 μžˆλŠ” 경우라면

someInterface?.customMethod?.();

μ΄λ ‡κ²Œ μ‚¬μš©ν•΄μ•Όν•œλ‹€.

 

μ°Έκ³ ν•œ μ‚¬μ΄νŠΈ

https://ko.javascript.info/optional-chaining

 

μ˜΅μ…”λ„ 체이닝 '?.'

 

ko.javascript.info

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Optional_chaining

 

Optional chaining - JavaScript | MDN

optional chaining μ—°μ‚°μž (?.) λŠ” 체인의 각 μ°Έμ‘°κ°€ μœ νš¨ν•œμ§€ λͺ…μ‹œμ μœΌλ‘œ κ²€μ¦ν•˜μ§€ μ•Šκ³ , μ—°κ²°λœ 객체 체인 내에 κΉŠμˆ™μ΄ μœ„μΉ˜ν•œ 속성 값을 읽을 수 μžˆλ‹€.

developer.mozilla.org