์๋ฌธ์ด ๋ ์ด์
์๋ฐ์คํฌ๋ฆฝํธ symbol์ ECMAScript6(2015)์ ๋์ ๋ 7๋ฒ์งธ ํ์ ์ด๋ผ๊ณ ๋ค์ด๋ ๋ดค์ง๋ง, ๊ทธ๋ค์ง ๊น๊ฒ ํ๋ณธ์ ์ด ์์๋ ๊ฒ ๊ฐ์์ ๊น๊ฒ ๊ณต๋ถํ๋ ์ค์ด๋ค. ์๊ฐํด ๋ณด๋ (๋ชฐ๋ผ์ ๊ทธ๋ฌ์ ์๋ ์์ง๋ง) ์ฝ๋ฉ์ ํ ๋๋ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ ๋งํ ์ํฉ์ด ์๋ ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ์์๋๋ฉด ๋์ค์ ๋ค ์ธ ๋ฐ๊ฐ ์์ ํ ๋ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์์ง, ์ฌ์ฉํ์ ๋์ ์ฅ์ ๋ ํ๋ฒ ์ ๋ฆฌํด ๋ณด์.
์ผ๋จ, symbol์ด๋?
์ฑ <๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive>์ ๋ฐ๋ฅด๋ฉด, symbol์ ๋ํ ์ค๋ช ์ ์๋์ ๊ฐ๋ค.
์ฌ๋ณผ(symbol)์ ES6์์ ๋์ ๋ 7๋ฒ์งธ ๋ฐ์ดํฐ ํ์ ์ผ๋ก, ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ํ์ ์ ๊ฐ์ด๋ค. ์ฌ๋ณผ ๊ฐ์ ๋ค๋ฅธ ๊ฐ๊ณผ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ์ด๋ค. ๋ฐ๋ผ์ ์ฃผ๋ก ์ด๋ฆ์ ์ถฉ๋ ์ํ์ด ์๋ ์ ์ผํ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ฝ๋๋ฅผ ํตํด ์์๋ณด์
์๋์ ๋ ๊ฐ์ง ์์ ์ฝ๋๋ฅผ ํตํด symbol์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์, ์ฌ์ฉํ ๊ฒฝ์ฐ๋ฅผ ํ๋์ ๋น๊ตํด ๋ณด์.
์์ 1: symbol์ ์ฌ์ฉํ์ง ์์ ์ฝ๋
๋์๋จ๋ถ ๋ค ๊ฐ์ง ๋ฐฉํฅ์ ๋ํ๋ด๋ ์ฝ๋๋ฅผ ์๋ก ๋ค์ด๋ณด์.
// ๋์๋จ๋ถ์ ๋ํ๋ด๋ ์์๋ฅผ ์ ์
// ์ด๋ ๊ฐ 1~4์๋ ํน๋ณํ ์๋ฏธ๊ฐ ์๊ณ ์์ ์ด๋ฆ์ ์๋ฏธ๊ฐ ์์
const Direction = {
EAST: 1,
WEST: 2,
SOUTH: 3,
NORTH: 4
};
// ๋ณ์์ ์์๋ฅผ ํ ๋น
const myDirection = Direction.EAST;
if (myDirection === Direction.EAST) {
console.log('You can go there'); // You can go there
}
์ ์์ ์ ๊ฐ์ด ๊ฐ์๋ ํน๋ณํ ์๋ฏธ๊ฐ ์๊ณ , ์์ ์ด๋ฆ ์์ฒด์ ์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋, ์์ ๊ฐ 1, 2, 3, 4๋ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ณ์ ๊ฐ๊ณผ ์ค๋ณต๋ ์๋ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ฒ๋ค๊ฐ ๋ค๋ฅธ ์ฝ๋์์ ๋์ผํ ์ซ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋ค.
์, ๊ทธ๋ ๋ค๋ฉด ์ด๋ฒ์๋ symbol์ ์ฌ์ฉํด ๋ณด์ํ ์ฝ๋์ ๋น๊ตํด๋ณด์.
์์ 2: symbol์ ์ฌ์ฉํ ์ฝ๋
// ๋์๋จ๋ถ์ ๋ํ๋ด๋ ์์๋ฅผ ์ ์
// ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ์๋ symbol๋ก ์์ ๊ฐ์ ์์ฑ
const Direction = {
EAST: Symbol('east'),
WEST: Symbol('west'),
SOUTH: Symbol('south'),
NORTH: Symbol('north')
};
// ๋ณ์์ ์์๋ฅผ ํ ๋น
const myDirection = Direction.EAST;
if (myDirection === Direction.EAST) {
console.log('You can go there'); // You can go there
}
์ ์ฝ๋์์๋ ๋ณ๊ฒฝ ๋ฐ ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฌด์๋ฏธํ ์์ ๋์ , ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ ์ผ๋ฌด์ดํ ์ด๋ฆ์ด ๋ช ํํ๊ฒ ๋ถ์ฌ๋์๋ค. ์์ฑ๋ symbol ๊ฐ์ ์ธ๋ถ๋ก ๋ ธ์ถ๋์ง ์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ๊ฐ๊ณผ ์ ๋ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์์ ์ฑ์ด ์๊ธด๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์๋ฏธ๊ฐ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค. ๋ํ ๋ค๋ฅธ ์ฝ๋์์ ๋์ผํ Symbol ๊ฐ์ ๋ง๋ค์ด๋ ์ค์ ๋ก๋ ๋ค๋ฅธ symbol ๊ฐ์ด๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ค.
symbol ์ฌ์ฉ ์ ์ฅ์
์์ ์์ ์ฝ๋๋ฅผ ๋ฏธ๋ฃจ์ด ๋ณด์์ ๋, symbol์ ์ฌ์ฉํ์ ๋์ ์ฅ์ ์ ํฌ๊ฒ ์ธ ๊ฐ์ง๋ก ๋ณผ ์ ์๋ค.
1. ๊ณ ์ ์ฑ ๋ณด์ฅ
Symbol์ ํญ์ ๊ณ ์ ํ๋ฉฐ ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฐ์ ๋ํ๋ด๋ฏ๋ก, ์ค์๋ก ๊ฐ์ด ์ถฉ๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด ์์ฑ์ ํค ๋๋ ๋ค๋ฅธ ์ํฉ์์ ๊ณ ์ ํ ์๋ณ์๋ฅผ ๋ง๋ค ๋ ์ ์ฉํ๋ค.
2. ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง
Symbol์ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฝ๋์์ ์ํธ์์ฉ ์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ํ๋ค.
3. ์๋ฏธ ๋ถ์ฌ
Symbol์ ์ด๋ฆ์ ๋ถ์ผ ์ ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์ฝ์ ๋ ์ด๋ค ์ญํ ์ ํ๋์ง ๋ ๋ช ํํ๊ฒ ํํํ ์ ์๋ค.
๐ ๋ด์ฉ ์ฐธ์กฐ
- ์ฑ <๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive>
'๐ Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript ๋ด์ฅ ํจ์์ ์ธ๊ณ - apply (2) | 2024.01.15 |
---|---|
์ด๋ฑํ์๋ ์ดํดํ๊ธฐ ์ฌ์ด ์๋ฐ์คํฌ๋ฆฝํธ '๋จ์ถํ๊ฐ' (0) | 2023.09.24 |
์ ๊ณ ์ฐจํจ์์์๋ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ ์ ๊ฑฐํ ๊น? (0) | 2023.09.17 |
์์๋๋ฉด ์ฌ๋ฏธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญ์ฌ (1) | 2023.09.10 |
์ ES6๋ถํฐ ํด๋์ค ๊ฐ๋ ์ด ์ถ๊ฐ๋๊ฑธ๊น? (0) | 2023.09.07 |
๋๊ธ