
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์คํฌ๋ฆฝํธ ๋ ๋ค ์ฌ์ฉ๋๋ ์ต์ ๋ ์ฒด์ด๋...
๊ฐ๋ฐ์ ํ๋ฉด์ ์์ฒญ ๋ง์ด ์ฐ๊ฒ ๋์ ์๊ธฐ ์ซ์ด๋ ์ ์๋ฐ์ ์๋ ์ง๊ฒฝ์ ์ด๋ฅด๋ ๋ค...
์ต์ ๋ ์ฒด์ด๋
๋ง์ฝ ๊ฐ์ด ์์ผ๋ฉด(= null ํน์ undefined๋ผ๋ฉด) ๊ทธ๋ฅ undefined๋ฅผ ๋ฐํํ๋ผ๋ ์์ ์ฅ์น์ด๋ค.
Exception์ด๋ ์๋ฌ๊ฐ ๋ํ๋์ง ์๋๋ก ๋์ ์ค๋ฅ ์์ด ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค.
์์ฑ์ ์ ๊ทผํ ๋ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ํนํ ์ค์ฒฉ๋ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ ๋ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค.
๊ฐ์ฅ ํฐ ์ด์ ์ (1) ์ฝ๋์ ์์ ์ฑ์ ๋์ (2) ๋ถํ์ํ ์กฐ๊ฑด๋ฌธ์ ์ค์ ์ด๋ผ๊ณ ๋ณผ ์ ์๊ฒ ๋ค.
์ฐธ๊ณ ๋ก ํ์๋ ์ธํ ๋ฆฌ์ ์ด์์ ๋นจ๊ฐ์ค ์๊ฒจ์ ํ์์์ด๋ ๊ทธ๋ฅ ์ด๋ค(์ ์์ ์ผ๋ก ์ ์๋๋๋๋ฐ ์ ๋นจ๊ฐ์ค์ด ๋๋์ง ๋๋ ๋ชจ๋ฅด๊ฒ ์¯\_(ใ)_/¯)
์์
๋๋ฃจํ ์ฟค์ ์ํผ์ ์น๊ตฌ ์ฌ์ค์ผ์ ์ง ์ฃผ์๋ฅผ ์ฐพ์๊ฐ๊ณ ์ถ๋ค. ํ์ง๋ง ์ฌ์ค์ผ๊ฐ ์ฃผ์๋ฅผ ์๋ ค์ฃผ์ง ์์ผ๋ฉด ๊ทธ๋ฅ ๋์ด๊ฐ๊ณ ์ ํ๋ค.
์ฌ์ค์ผ๊ฐ ์ฃผ์๋ฅผ ์๋ ค์ฃผ์ง ์์ ๊ฒ = null ํน์ undefined ์ํ, ๊ทธ๋ฅ ๋์ด๊ฐ๋ ๊ฒ = undefined๋ก ์ถ๋ ฅํ๋ ์ํ.
ํ์ ์คํฌ๋ฆฝํธ๋ก ์ฐ์ตํด๋ณด์!
const friend = {
name : "Sasuke",
address : {
village : "leaf"
country : "fire"
},
};
์ฌ์ค์ผ๊ฐ ์ฌ๋ ๋ง์์ ์ฝ์๋ก ์ฐ์ด๋ณด์.
console.log("Sasuke's village : ", friend.address.village);
// ์ฌ์ค์ผ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ์๋ ค์คฌ๋ค๋ฉด leaf๊ฐ, ์์๋ ค์คฌ์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
const village = friend.address?friend.address.village:undefined;
console.log(village); // 'leaf' ํน์ 'undefined' ์ถ๋ ฅ
// ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ณ ์ถ์ง ์๋ค๋ฉด ์์ฒด์ ์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด undefined๊ฐ ์ถ๋ ฅ๋๊ฒ ์ค์ ํด์ผ ํ๋ค.
๋ณ๋์ด ์ฌํ ์ฌ์ค์ผ๊ฐ ์ฃผ์๋ฅผ ๋๋ฃจํ ์ฟค์๊ฒ ์๋ ค์ฃผ์ง ์๋๋ค๋ฉด ๋๋ฃจํ ์ฟค์ ์น๊ตฌ์ ์ง์ ์ฐพ์๊ฐ ์ ์๋ค. ๊ฒฐ๊ตญ ์ฝ์์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๊ณ , ์ด๋ฅผ ๋ง์๋ ค๋ฉด ๊ท์ฐฎ์ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๊ทธ๋ ์ง๋ง ์ต์ ๋ ์ฒด์ด๋์ ํตํด ์ ๊ท์ฐจ๋์ฆ์ ํด๊ฒฐํ ์ ์๋ค.
const village = friend.address?.city; // Optional chaining ์ด์ฉ
console.log("์ฌ์ค์ผ์ ์ง : ", village); // leaf, ํน์ undefined ์๋ ์ถ๋ ฅ
์ต์ ๋ ์ฒด์ด๋์ null์ด๋ undefined๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฐ์ฒด ์์ฑ์ ?. ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๊ฒ ์์ฑ์ ์ ๊ทผํ ์ ์๋๋ก ๋๋๋ค. address์ ๊ฐ์ด ํนํ ์ค์ฒฉ๋ ๊ฐ์ฒด์์ ์ฌ์ฉ์ด ์ฉ์ดํ๋ฉฐ, null ํน์ undefined๋ก ์ธํ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ค.
์ฌ์ฉํ๋ ์ํฉ
ํ์์ ๊ฒฝ์ฐ ์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด ๋๋ถ๋ถ ์ฌ์ฉํ์ง๋ง, ๊ทธ๋ ์ง ์์ ์ํฉ์์๋ ๋ณธ์ธ์ ์ ๋ง์ ๋ง๊ฒ ๋ค์ํ ์ฌ์ฉํ ์ ์๋ค.
1. ๊ฐ์ฒด์ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ
const friend = {
name : "Sakura",
profile : {
age: 15,
hair : pink
},
};
console.log("Sakura's hobby : ", friend.profile?.hobby); // hobby๋ ์์ผ๋ฏ๋ก undefined ์ถ๋ ฅ
์ ์ฌ์ฟ ๋ผ์งฑ์ ์ทจ๋ฏธ๋ profile์ ์๋ ์์ฑ์ด๋ฏ๋ก hobby๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์ด๋ undefined๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
2. ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ๋
const friends = [
{name : "Sasuke", hair: "black"},
{name : "Sakura", hair: "pink"},
{name : "Sikamaru", hair: "black"},
{name : "Chouji", hair: "brown"},
];
const friendName = friends[4]?.name; // undefined
์ ์์์์ 4๋ฒ์งธ ์ธ๋ฑ์ค์ ์น๊ตฌ๋ ์์ผ๋ฏ๋ก(=null) undefined๊ฐ ์ถ๋ ฅ๋๋ค
ํน์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ ๋๋ ์ฌ์ฉํ ์ ์๋๋ฐ,
const friend = [];
const firstFriend = friend[0]?.length; // undefined
๋ก ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ ์๋ ์๋ค.
3. ํจ์ ํธ์ถ ์
๊ฐ์ฒด๊ฐ ํจ์์ผ ์๋ ์์ง๋ง, ํจ์๊ฐ ์ ์๋์ง ์์์ ๋ ์์ ํ๊ฒ ํธ์ถํ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๋ค.
// ํจ์๊ฐ ์ ์๋์์ผ๋ฉด ํธ์ถ
const hello = {
greet : () => "Hello!",
};
console.log(hello.greet?.()); // "Hello!" ์ถ๋ ฅ
// ํจ์๊ฐ ์ ์๋์ด์์ง ์์ผ๋ฏ๋ก undefined
const notHello = {};
console.log(notHello.greet?.()) // undefined ์ถ๋ ฅ
์ต์ ๋ ์ฒด์ด๋์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด?
์ฌ์ฉํ์ง ์์๋ ๋์ฒดํ๋ ๋ฐฉ๋ฒ์ ๋ง์ง๋ง, ์ ์ผ ์ค์ํ๊ฑด ๊ท์ฐฎ๋ค.
๋ณดํต ์กฐ๊ฑด๋ฌธ์ด๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋๋ฐ,
if (friend && friend.profile && friend.profile.hair) {
console.log(friend.profile.hair);
}else{
console.log("undefined");
};
์ด๋ฐ์์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ๋์ด์ง๊ฒ ์จ์ผ ํ๋๋ฐ, ์ด๋ฌ๋ฉด ๋๋ฌด ๊ธธ์ด์ง๋ค!
๋ฐ๋ผ์ ์ต์ ๋ ์ฒด์ด๋์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ค์ด๋๋ฐ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๊ฒฐ๋ก
๊ทธ๋ฐ์๋ ์กฐ๊ฑด๋ถ ๋ ๋๋ง, ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ต์ ๊ฐ์ฒด ์ฒ๋ฆฌ ๋ฑ๋ฑ์์ ์ฌ์ฉ๋์ง๋ง ๋๋ฌด ๋จ๋ฐํด์๋ ์๋๋ค. ๋์ค์ ๋๋ฒ๊น ์ด ์ด๋ ค์์ง ์ ์๊ธฐ ๋๋ฌธ...
๋ชจ๋๋ค ์ด์ฌํ ๊ณต๋ถํ๊ณ ํ๋ณต์ฝ๋ฉํ์!
'Frontend๐จ > JavaScript๐, TypeScript๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| sort()์ ๋ํด ์์๋ณด๊ธฐ (0) | 2025.12.03 |
|---|---|
| JavaScript ํ์ดํ ํจ์ ๊ดํธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ(+์ต๋ช ํจ์) (0) | 2025.11.10 |
| [JavaScript, TypeScript] ์ ์ฌ ๋ฐฐ์ด, ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด, Array.from() (1) | 2025.09.18 |
| ์ฝ๋ฐฑ ํจ์(callback function) ์ ๋ฆฌํ๊ธฐ (1) | 2025.07.09 |
| [JavaScript, TypeScript] map(), filter(), some()๋ฉ์๋ (0) | 2024.12.21 |