π 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
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Optional_chaining
'Javascript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] Class (0) | 2022.06.10 |
---|---|
[JS] promise, async, await μ°μ§ μκ³ parallel, waterfall ꡬννκΈ° (0) | 2022.06.03 |
[JS] Promise, Await λΉλκΈ°μ λν΄ μμ보기 (0) | 2022.06.01 |
[JS] JavaScriptμ νμ κ²μ¬ (0) | 2022.05.29 |
[JS] μμλ³μλ₯Ό μ€μ¬μΌ νλ μ΄μ (ν΄λ¦° μ½λ) (0) | 2022.05.27 |