๊ณต๋ถํ๋ค๊ฐ ?. ๋ผ๋ ์ฒจ ๋ณด๋ ๋ฌธ๋ฒ์ด ๋์์ ๊ฒ์ํ๋ ค๊ณ ํ๋๋ ?. ํค์๋๋ ๊ฒ์์ด ์๋จ..
๊ทธ๋์ ๋ ์ฐพ์๋ณด๋ ์ด๊ฑธ Optional Changing์ด๋ผ๊ณ ํ๋ค๋๋ผ ~
์ฐธ๊ณ ๋ก ์ด ๋ฌธ๋ฒ์ javascript.info ์ ๊ฒ์ํ๋ฉด ์ต๊ทผ์ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ด๋ผ๊ณ ๋ฐ ์ ๋์
์ฒ์ ๋ณด๋๊ฒ ใ ใ ๋น์ฐํจ
์ต์ ๋ ์ฒด์ด๋(optional Chaining) ์ธ ?. ์ ์ฌ์ฉํ๋ฉด, ํ๋กํผํฐ๊ฐ ์๋ ์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ์๋ฌ ์์ด ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋ค๊ณ ํ๋ค.
๋ฐฐ๊ฒฝ)
์ด๋ค ํ์ด์ง์ ์กด์ฌํ์ง ์๋ ์์์ ์ ๊ทผํ์ฌ ์์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
// querySelecter(...) ํธ์ถ ๊ฒฐ๊ณผ๊ฐ null์ธ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์
let html = document.querySelector('.my-element').innerHTML;
๊ทธ๋์ ์ด๋ฐ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ && ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ณค ํ๋๋ฐ...
let user = {}; //์ฃผ์ ์ ๋ณด๊ฐ ์๋ ์ฌ์ฉ์
alert( user && user.address && user.address.street); // undefined, ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์
์ค์ฒฉ ๊ฐ์ฒด์ ํน์ ํ๋กํผํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ ๊ตฌ์ฑ ์์๋ค์ AND(&&)๋ก ์ฐ๊ฒฐํ์ฌ ์ค์ ํด๋น ๊ฐ์ฒด๋ ํ๋กํผํฐ๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค. ์ด๋ ๊ฒ AND ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ์ฐ๊ฒฐํ๋ฉด ์ฝ๋๊ฐ ์์ฃผ ๊ธธ์ด์ง๋ค๋ ๋จ์ ์ด ์กด์ฌ..
๊ทธ๋์ ์ต์ ๋ ์ฒด์ด๋(?.)์ด ๋ฑ์ฅํ๊ฒ ๋จ.
?.๋ ?. '์'์ ํ๊ฐ ๋์์ด undefined ๋ null ์ด๋ฉด ํ๊ฐ๋ฅผ ๋ฉ์ถ๊ณ undefined๋ฅผ ๋ฐํํ๋ค.
์ต์ ๋ ์ฒด์ด๋์ ์ฌ์ฉํด user.address.street์ ์ ๊ทผํด๋ณด์.
let user = {}; // ์ฃผ์ ์ ๋ณด๊ฐ ์๋ ์ฌ์ฉ์
alert(user?.address?.street); // undefined, ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์.
user?.address์ ํํ๋ก ์ฃผ์๋ฅผ ์ฝ์ผ๋ฉด ์๋์ ๊ฐ์ด user ๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง ์๋๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์.
let user=null;
alert(user?.address); //undefined
alert(user?.address.street); //undefined
์์๋ฅผ ๋ณด๋ฉด ?.๋ ?. '์'์ ํ๊ฐ ๋์์๋ง ๋์๋๊ณ , ํ์ฅ์์๋ ๋์ํ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค..
์ฐธ๊ณ ๋ก, user?. ๋ user๊ฐ null์ด๋ undefined์ธ ๊ฒฝ์ฐ์๋ง ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ ๋ฌธํ