๋ชฉ์ฐจ
JS์๋ ์์ํ์ ๊ณผ ์ฐธ์กฐํ์ ์ด ์กด์ฌํ๋ค.
๊ทธ ๋์ ๊ฐ์ ๋ณต์ฌ์ ์ธก๋ฉด์์ ๋น๊ตํ๋ฉฐ ์์๋ณด์!
1) ์์ํ์
์์ํ์ ์ ๊ฐ์ ์ํ ๋ณต์ฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.(Copy by value)
let n1 = 1;
let s1 = 'A';
//n1, s1 ๋ณต์ฌ
let n2 = n1;
let s2 = s1;
//์๋ก์ด ๊ฐ ํ ๋น
n2 = 2;
s2 = 'B';
console.log(n1, s1);
console.log(n2, s2);
>>> 1 'A'
>>> 2 'B'
์์ ๊ฒฐ๊ณผ์ฒ๋ผ ๊ฐ ์์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด๋ฏ๋ก
๋ณต์ฌ๋ฅผ ํ ์ดํ, ๋ฌด์จ ์ง์ ํ๋ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
2) ์ฐธ์กฐํ์
์ฐธ์กฐํ์ ์ '์ฃผ์๊ฐ'์ด ๋ณต์ฌ๊ฐ ๋๋ค. (Copy by reference)
const ob1 = {
num : 1, str : 'A'
};
//๋ณต์ฌ
const ob2 = ob1;
ob2 = {};
>>> Uncaught TypeError: Assignment to constant variable.
์์๋ก ์ ์ธํ์๊ธฐ ๋๋ฌธ์ ob2์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค!
console.log(ob1);
console.log(ob2);
>>> {num: 1, str: 'A'}
>>> {num: 1, str: 'A'}
์์ฒ๋ผ ๋๊ฐ์ด ๋ณต์ฌ๊ฐ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๊ฐ์ฒด๋ cosnt๋ก ์ ์ธํ์์๋ ๋ถ๊ตฌํ๊ณ
๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.(C,U,D ๋ชจ๋ ๊ฐ๋ฅ)
//๋ด๋ถ ๊ฐ ๋ณ๊ฒฝ
ob2.num = 2;
ob2.str = 'B';
console.log(ob1);
console.log(ob2);
>>> {num: 2, str: 'B'} //ob1๋ ํจ๊ป ๋ณ๊ฒฝ๋จ
>>> {num: 2, str: 'B'}
์์ ๊ฒฐ๊ณผ์ฒ๋ผ ๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๋ํ ob2๋ง์ ๋ณ๊ฒฝํ์์๋ ๋ถ๊ตฌํ๊ณ ob1๊น์ง ํจ๊ป ๋ณ๊ฒฝ๋์์์ ํ์ธํ ์ ์๋ค.
์ด๋ ob1์ ๋ณต์ฌํ ๋ ๋ด๋ถ์ ๊ฐ ์์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋
๋ด๋ถ์ ๊ฐ์ด ๋ค์ด์๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ob1๊ณผ ob2๊ฐ ์๋ก ๊ฐ์ ์ฃผ๋จธ๋๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
'๐ | WEB DEV > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (18)_ ์ ์ด๋ฌธ๊ณผ ์ข์ ์ฝ๋? (0) | 2023.03.04 |
---|---|
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (17)_์ค์ฝํ (0) | 2023.03.03 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (15)_์ฐ์ฐ์(์ผํ, null๋ณํฉ(??) ) (2) | 2023.02.26 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (14)_๋ถ๋ฆฌ์ธ์ ์ฌ์ฉ๋๋ ์ฐ์ฐ์๋ค (0) | 2023.02.26 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (13)_์ซ์์ ์ฌ์ฉ๋๋ ์ฐ์ฐ์๋ค (0) | 2023.02.26 |
๋๊ธ