2025. 8. 29. 16:46ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ์ต์
๋ ์ฒด์ด๋ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
2. ์ต์ ๋ ์ฒด์ด๋ ?.
3. ?.() ?.[]
3-1. ๊ฐ์ฒด ๋ด ํจ์์ ์กด์ฌ ์ฌ๋ถ ํ์ธ
3-2. ๊ฐ์ฒด ๋ด ํ๋กํผํฐ์ ์กด์ฌ ์ฌ๋ถ ํ์ธ
1. ์ต์ ๋ ์ฒด์ด๋ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
์ฌ์ฉ์ ์ค ์ด๋ค ์ฌ๋๋ค์ ์ฃผ์๋ฅผ ๋ฑ๋กํ๊ณ ์ถ์ง ์์ ์๋ ์๋ค.
์ฃผ์๋ฅผ ๋ฑ๋กํ์ง ์์ null์ธ ์ํ๋ก ๋จ๊ฒจ๋๋ฉด, ์ฃผ์ ์ ๋ณด์ ์ ๊ทผํ์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
let bang = {};
console.log(bang.address.street); // TypeError: Cannot read property 'address' of undefined
?. ์ด ์ถ๊ฐ๋๊ธฐ ์ด์ ์๋ && ์ฐ์ฐ์๋ฅผ ํ์ฉํ์๋ค.
let bang = {};
console.log(bang && bang.address); // undefined
ํ์ง๋ง ์ค์ฒฉ ๊ฐ์ฒด์์ ์ด๋ ๊ฒ AND ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์์ฃผ ๊ธธ์ด์ง ์ ์๋ค.
๋ ๋ค๋ฅธ ์์๋ก JS๋ก ํ์ด์ง์ ์กด์ฌ ํ์ง ์๋ ์์์ ์ ๊ทผํ ๋์ ๋ฌธ์ ๋ ์๋ค.
let element = document.querySelector('.my_element').innerHTML;
2. ์ต์ ๋ ์ฒด์ด๋ ?.
?. ์ '์'์ ํ๊ฐ ๋์์ด undefined๋ null์ด๋ฉด ํ๊ฐ๋ฅผ ๋ฉ์ถ๊ณ undefined๋ฅผ ๋ฐํํ๋ค.
๊ทธ ์ธ์ ์ํฉ์์๋ ๊ทธ ์กด์ฌํ๋ ๊ฐ์ ๋ฐํํ๋ค.
let bang = {};
console.log( bang?.address ); // undefined (์๋ฌ ๋ฐ์ ์ํจ)
console.log( bang?.address.street ); // undefined
?.์ ํน์ง์ ์ ๋ฆฌํด๋ณด์.
- ?. ์์ ๋ณ์๋ ๋ฐ๋์ ์ ์ธ๋์ด ์์ด์ผ ํ๋ค.
- ?. ๋ ๋จ๋ฝํ๊ฐ๋ฅผ ํ์ฌ ์ผ์ชฝ ๋์์ ๊ฐ์ด ์์ผ๋ฉด ์ฆ์ ํ๊ฐ๋ฅผ ๋ฉ์ถ๋ค.
- ?. ๋ ์ฐ์ฐ์๊ฐ ์๋๋ผ ํจ์/๋๊ดํธ์ ํจ๊ป ๋์ํ๋ ๋ฌธ๋ฒ ๊ตฌ์กฐ์ฒด์ด๋ค.
3. ?.() ?.[]
?.๋ ์ฐ์ฐ์๊ฐ ์๋ ๋ฌธ๋ฒ ๊ตฌ์กฐ์ฒด๋ผ๊ณ ํ๋ค. ์ฌ์ฉ ์์๋ฅผ ๋ณด์.
1. ๊ฐ์ฒด ๋ด ํจ์์ ์กด์ฌ ์ฌ๋ถ ํ์ธ
let user1 = {
admin() {
alert("๊ด๋ฆฌ์ ๊ณ์ ์
๋๋ค.");
}
}
let user2 = {};
user1.admin?.(); // ๊ด๋ฆฌ์ ๊ณ์ ์
๋๋ค.
user2.admin?.();
- ?.()๋ฅผ ์ฌ์ฉํด admin์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค.
user1 : admin์ด ์กด์ฌํ๋ฏ๋ก ๋ฉ์๋๊ฐ ํธ์ถ ๋จ
user2 : admin์ด ์กด์ฌํ์ง ์์ผ๋(null/undefined) ์๋ฌ ์์ด ์งํ๋จ.
2. ๊ฐ์ฒด ๋ด ํ๋กํผํฐ์ ์กด์ฌ ์ฌ๋ถ ํ์ธ
let user1 = {
firstName: "bang"
};
let user2 = null;
let key = "firstName";
console.log(user1?.[key]); // bang
console.log(user2?.[key]); // undefined
console.log(user1?.something?.not?.existing); // undefined
- ?.[] ๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์ ์กด์ฌ ์ฌ๋ถ๊ฐ ํ์คํ์ง ์์๋ ์์ ํ๊ฒ ํ๋กํผํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
3. delete์ ?.
delete ํค์๋์ ์กฐํฉํ์ฌ ์ฌ์ฉํ ์๋ ์๋ค.
delete user?.name; // user๊ฐ ์กด์ฌํ๋ฉด user.name์ ์ญ์
user๊ฐ ์กด์ฌํ๋ค๋ฉด ?.๋ user๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ delete user.name์ด ๋ ์ ์๋ค.
?. ๋ ์ด๋ ๊ฒ ์ฝ๊ฑฐ๋ ์ญ์ ์์ ์ฌ์ฉํ ์ ์์ง๋ง ์์ฑ(์ฐ๊ธฐ)์ ๋ถ๊ฐ๋ฅํ๋ค.
?. ์ ์ผ์ชฝ ๋์์ด ์์ด๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผํ๋ค.
๊ผญ ์์ด์ผํ๋๋ฐ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค.
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| E1 : JS๋ก DOM ๊ฐ์ฒด ํ์ํ๊ธฐ (0) | 2025.09.07 |
|---|---|
| B23 : iterable ๊ฐ์ฒด (1) | 2025.08.29 |
| B27: JSON ๋ฉ์๋ (0) | 2025.08.26 |
| B26: ๊ตฌ์กฐ ๋ถํด ํ ๋น : object๋ฅผ ๋ณ์๋ก ๋ถํดํ๊ธฐ (0) | 2025.08.26 |
| B25 : ๊ฐ์ฒด ๋ฉ์๋ Object.keys, values, entries (0) | 2025.08.26 |
GitHub