all is well!!
11. ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด(์ฝ์คํ๊ณผ ํ) ๋ณธ๋ฌธ
11. ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด(์ฝ์คํ๊ณผ ํ)
tnqlscho 95 2023. 7. 13. 23:48๐ ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด
์์ ํ์ ์ ๊ฐ์ ์ฝ ์คํ์ ์ ์ฅ
๊ฐ์ฒด ํ์ ์ ๊ฐ์ ํ์ ์ ์ฅ
๊ฐ์ฒด ํ์ ์ ์ฝ์คํ์ value์ ๊ฐ์ฒด๊ฐ ์๋ ํ์ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
์ข ๋ ์ฝ๊ฒ ํ๊ธฐ (24.01 ์ถ๊ฐ)
๋นํธ(bit)๋ 0๊ณผ 1๋ก ํํํ ์ ์๊ณ ๊ณ ์ ์ ์๋ณ์๋ก ์์น๋ฅผ ์ ์ ์๋ค.
์ข๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๋นํธ๋ฅผ ์ ๋นํ ๋ฌถ์์ผ๋ก ๊ด๋ฆฌํ๊ฒ ๋ฐ์ดํธ(byte).
1๋ฐ์ดํธ์๋ 8๊ฐ์ ๋นํธ๋ก ๋ฌถ์ฌ์๋ค.
๊ทธ๋ฆฌ๊ณ 1๋นํธ๋ 0,1 ๋๊ฐ์ง๋ก ํํํ ์ ์๊ธฐ ๋๋ฌธ์
256๊ฐ(2์ 8์น)๊ฐ์ ํํํ ์ ์๋ค.
๋ชจ๋ ๋ฐ์ดํฐ๋ ์ด๋ ๊ฒ ๋ฐ์ดํธ ๋จ์์ ์๋ณ์์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ํตํด์ ๊ตฌ๋ถํ๊ณ ์ฐ๊ฒฐํ๋ค.
์์ ํ์ : number, string, boolean, undefined, null, symbol
์ฐธ์กฐ ํ์ : array, function, data, RegExp, Map, WeekMap, Set, WeekSet
๊ณตํต์ :
๋ ํ์ ๋ค ๋ณ์์ ๊ฐ์ ํ ๋นํ ๊ฐ์ด ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ์ฃผ์๊ฐ์ ๋ณต์ ํ๋ค.
๋ค๋ฅธ์ :
์์ ํ์ ์ ํ ๋น๋ ๊ฐ์ด ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ์ฃผ์๊ฐ์ ๋ฐ๋ก ๋ณต์ ํ๋ ๊ฒ์ด๊ณ ,
์ฐธ์กฐ ํ์ ์ ํ ๋น๋ ํ๋กํผํฐ ๊ฐ๋ค์ด ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ์ฃผ์๊ฐ๋ค์ ๋ฌถ์์ ๋ฐ๋ผ๋ณด๋ ์ฃผ์๊ฐ์ ๋ณต์ ํ๋ ๊ฒ.
๐ ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด ์์ - ๋ถ๋ณ๊ฐ๊ณผ ๊ฐ๋ณ๊ฐ
let age = 35;
let oldAge = age;
age = 36;
console.log(age); //35
console.log(oldAge); //36
const me = {
name : ‘Kyle’,
age : 35
};
const friend = me;
friend.age = 33;
console.log(friend); //{ name : ‘Kyle’, age : 33 }
console.log(me); //{ name : ‘Kyle’, age : 33 }
Age์ oldAge๋ฅผ ์์ํ์ Number๋ก ํ ๋น์ ํ๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ์ซ์ 35๋ฅผ ํ ๋น์ ํ๋ค๋ฉด!
์ด๋ฏธ ๋ณ์ age์์ 35๊ฐ ๋ณ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ทธ ๊ฐ์ ์ฌํ์ฉํด์
oldAge์ age์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ ๋ณ์๊ฐ์ผ๋ก ์ ์ฅํ๋ค.

๊ทธ๋์ ๋ ๋ณ์ ์ ๋ถ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋์ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์์ ๋ค์ด์๋ value35๊ฐ ์ฐํ๋ค.
๋ง์ฝ ์ด๋ age์ value๋ฅผ 36์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด
๋ณ๋์ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ 36์ ๊ฐ์ด ์๊ธฐ๋๋ฌธ์ 0002์ ๊ณต๊ฐ์ ๋ง๋ค์ด์ 36์ ์ ์ฅํ๋ค.

๊ทธ๋์ ๋ณ์ age๊ฐ์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ์ฃผ์ 0002๋ฅผ ํ ๋นํ๋ค.
์ด๋๋ ๊ฐ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค๋๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ณ์์ ํ ๋น๊ฐ์ ๋ณ๊ฒฝํ์๋ ๊ธฐ์กด์ ๋ฐ๋ผ๋ณด๊ณ ์๋ ์ฃผ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋๊ฒ ์๋
๋ฐ์ดํฐ ๊ณต๊ฐ์ ๋ณ๊ฒฝํ ๊ฐ์ด ์๋์ง ์ฐพ์ ํ ์์ผ๋ฉด ๊ทธ ์ฃผ์๊ฐ์ผ๋ก ๋ณ์์ ๊ฐ์ ์ ์ฅํ๊ณ
์์ผ๋ฉด ๋ค๋ฅธ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ํ ๋น๊ฐ์ ์ ์ฅํ๊ณ ๊ทธ ์ฃผ์๊ฐ์ ๋ณ์์ ๊ฐ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ
์ ๋ถ๋ณ์ฑ์ ๊ฐ๋๋ค๊ณ ํ๋ค.
์ด๋ ๊ฒ ์์ ํ์ ์ ๋ถ๋ณ์ฑ์ ๊ฐ๋๋ค!
๊ฐ์ฒด ํ์ ์ผ๋ก ์ ์ธํ๋ฉด ์์ํ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๋ค.
๊ฐ์ฒด์ ๋ณ์(ํ๋กํผํฐ) ์์ญ์ด ๋ฐ๋ก ์กด์ฌํ๋ค.
me๋ผ๋ ๋ณ์์ name,age ํญ๋ชฉ์ด ๋ด๊ธด ๊ฐ์ฒด๋ฅผ ์ ์ธํด์ ์ ์ฅ์ ํด์ฃผ๋๋ฐ
์ฝ์คํ์ value์๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋๊ฒ ์๋๋ผ ํ์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ค.
(๋ณดํต ๊ฐ์ฒด๋ค์ ํ์ ์ ์ฅ์ ํ๋ค.)
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฃผ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ์ฐ๊ฒฐ์์ผ์ ์ฝ์คํ์์๋ ํ์ ํด๋น ๊ฐ์ฒด์ฃผ์๋ฅผ ๋ฐ๋ผ๋ณด๋๊ฒ.

๋ง์ฝ์ me๊ฐ์ฒด์ age๊ฐ์ 33์ผ๋ก ๋ฐ๊พธ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?

me์ age๊ฐ๋ง 33์ผ๋ก ๋ณ๊ฒฝํด๋ me์ friend ์ ๋ถ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐ๋ผ๋ณด๊ณ
์๊ธฐ๋๋ฌธ์ ๋ ๋ณ์์ ๊ฐ์ฒด ๋ชจ๋ age๊ฐ์ด 33์ผ๋ก ๋ณํ๊ฒ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๊ฐ์ฒด์ ์์ ๋ณต์ฌ!
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์์ ๋ณต์ฌ(Shallow Copy)๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ๋
์๋ณธ ๊ฐ๊ณผ ๋ณต์ฌ๋ ๊ฐ์ด ๊ฐ์ ์ฐธ์กฐ(=๋ฉ๋ชจ๋ฆฌ ์ฃผ์)๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด๋ค.
์์ ๋ณต์ฌ์ ์ฃผ์ํ ์ ์ ์๋ณธ์ ๋ถ๋ณ์ฑ์ ์ง์ผ์ค์ผ ๋๋ค๋๊ฒ!!(์ค์)
๋ถ๋ณ์ฑ์ ์ง์ผ์ฃผ์ง ๋ชปํ๋ฉด ๋ค๋ฅธ ์์ ํจ์์๋ ์ํฅ์ ๋ฏธ์น๋ค.
๋ฐ๋๋ก ๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ๋ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํด ์์ ํ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ทธ๋์ ๋ณต์ฌํ ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ์๋ณธ๊ณผ๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ๋๋ฌธ์
์๋ณธ๊ฐ์ฒด๋ ๋ฐ๋์ง ์๋๋ค.
๊ฐ์ฒด์ ์์ ๋ณต์ฌ๋ Object.assign()์ ์ฌ์ฉํ๊ณ
๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ๋ lodash JS๋ผ์ด๋ธ๋ฌ๋ฆฌ์ clonedeep์ ์ฌ์ฉํ๋๊ฒ๋ ๋ฐฉ๋ฒ์ค ํ๋!
'Javascript ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 12.๊ฐ์ฒด ๋ฆฌํฐ๋ด (0) | 2023.07.15 |
|---|---|
| 11. ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2023.07.14 |
| 10. JS์ ์ ์ด๋ฌธ (0) | 2023.07.12 |
| 9. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง (0) | 2023.07.04 |
| 8. JS์ ์ธํฐํ๋ฆฌํฐ (0) | 2023.06.13 |