์ค๋๋ ๋ฐฐ์ด ๋ด์ฉ์ ํต์ฌ๋ง ์ ์ผ๋ ค๊ณ ํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ํ ์ผํ ๋ถ๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ ๋ค์ด๋ธ ์๋ฆฌ์ฆ์ ์์ฑ ํ๋ ค๊ณ ํ๋ค.
์์ ์๋ฃํ (primitive data type) : number, string, boolean ๋ฑ
// ์์ ์๋ฃํ(primitive type): number, string, boolean, undefined, null
42, 'string', true, undefined, null
์ฐธ์กฐ ์๋ฃํ (reference data type) : ๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์ ๋ฑ
// ์ฐธ์กฐ ์๋ฃํ(reference type)
[0, 1, 2] // ๋ฐฐ์ด
{name: 'kimcoding', age: 45} // ๊ฐ์ฒด
function sum (x, y) { return x + y } // ํจ์
์์ ์๋ฃํ : ํ ๋นํ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๋ฉด ๊ฐ ์์ฒด์ ๋ณต์ฌ๊ฐ ์ผ์ด๋๋ค. (๊ฐ ์์ฒด๊ฐ ๋ณต์ฌ๋๋ค๋ ๊ฒ์ ๋ ์ค ํ๋์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ๋ค๋ฅธ ํ๋์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธ)
์ฐธ์กฐ ์๋ฃํ : ์์์ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ์ ์ ์ฅํ๊ณ ๊ทธ ์ ์ฅ๊ณต๊ฐ์ ์ฐธ์กฐํ๋ ์ฃผ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ ๊ฒฝ์ฐ ๊ฐ ์์ฒด๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์๋ ์ฃผ์๊ฐ ๋ณต์ฌ๋๋ค.
๐ก ์์ ๋ณต์ฌ ) ์ค์ฒฉ๋ ๊ตฌ์กฐ ์ค ํ ๋จ๊ณ๊น์ง๋ง ๋ณต์ฌ
Object.assign, slice , spread syntax๋ฌธ๋ฒ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ์กด ๋ฐฐ์ด์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ง๋ ๊ฒ์ ๋ค๋ฅธ ๋ณ์์ ์ ์ฅํ๋ค๋ฉด ๋ค๋ฅธ ์ฃผ์ ๊ฐ์ ๊ฐ์ง ์ ์๊ฒ ๋๋ค.
์์ ํจ์,๋ฌธ๋ฒ์ ์ ์ฉํด๋ ๋ณต์ฌ๊ฐ ์๋๋ ๊ฒฝ์ฐ : ์ฐธ์กฐ ์๋ฃํ ๋ด๋ถ์ ์ฐธ์กฐ ์๋ฃํ์ด ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ ๋ณต์ฌํ ์ ์๋ค.
๐ก ๊น์ ๋ณต์ฌ ) ์ฐธ์กฐ ์๋ฃํ ๋ด๋ถ์ ์ค์ฒฉ๋์ด ์๋ ๋ชจ๋ ์ฐธ์กฐ ์๋ฃํ์ ๋ณต์ฌํ๋ ๊ฒ // javascript ๋ด๋ถ์ ์ผ๋ก๋ ๊น์ ๋ณต์ฌ๋ฅผ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๋ฌธ๋ฒ์ ์์ฉํ๋ฉด ๊ฐ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณผ ์ ์์
๋ค๋ฅธ ๋ฌธ๋ฒ : JSON.stringify()์ JSON.parse()
1. JSON.stringify()๋ ์ฐธ์กฐ ์๋ฃํ์ ๋ฌธ์์ด ํํ๋ก ๋ณํํ์ฌ ๋ฐํ
2. JSON.parse()๋ ๋ฌธ์์ด์ ํํ๋ฅผ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๋ฐํ
++ ๋จผ์ ์ค์ฒฉ๋ ์ฐธ์กฐ ์๋ฃํ์ JSON.stringify()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ํํ๋ก ๋ณํํ๊ณ , ๋ฐํ๋ ๊ฐ์ ๋ค์ JSON.parse()๋ฅผ ์ฌ์ฉํ๋ฉด, ๊น์ ๋ณต์ฌ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐํ
์์ )
const arr = [1, 2, [3, 4]];
const copiedArr = JSON.parse(JSON.stringify(arr));
์์ ๊น์ ๋ณต์ฌ๊ฐ ์๋๋ ์์ธ์ ๊ฒฝ์ฐ )
์์ ํ ๊น์ ๋ณต์ฌ๋ฅผ ๋ฐ๋์ ํด์ผ ํ๋ ๊ฒฝ์ฐ, node.js ํ๊ฒฝ์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ lodash, ๋๋ ramda๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
let num = 20;
num = 30
=> console.log(num) => 30
์ด์ฒ๋ผ num์ 30์ ์ฌํ ๋น ํ๋ฉด, ๋จ์์๋ 20์ ๊ฐ๋น์ง ์ฝ๋ ํฐ์ ์ํด ์ฌ์ฉํ์ง ์๋ ๊ฐ์
์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ๋ค.