CS ๊ณต๋ถ€ - front

[JS] ๊นŠ์€๋ณต์‚ฌ vs ์–•์€๋ณต์‚ฌ

Nuri-KSLV-II 2023. 2. 15. 19:06

๐Ÿ“Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์›์‹œ๊ฐ’๊ณผ ์ฐธ์กฐ๊ฐ’

  ์›์‹œ๊ฐ’ ์ฐธ์กฐ๊ฐ’
ํŠน์ง• ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ƒˆ๋กœ ํ™•๋ณดํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๊ฐ’์„ ์ €์žฅ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜(์ฃผ์†Œ)์— ๋Œ€ํ•œ ๊ฐ„์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ
mutability immutable mutable
์˜ˆ์‹œ string
number
bigint
boolean
undefined
symbol
๊ทธ ์™ธ(array, object, function..)

 

 

๐Ÿ“Œ ์˜ˆ์‹œ

์›์‹œ๊ฐ’ vs ์ฐธ์กฐ๊ฐ’

- myArray์˜ ๋ฐ์ด์ฒ˜ ์ž์ฒด๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Heap)์— ์ €์žฅ๋˜๋ฉฐ, ๋ณ€์ˆ˜์— ํ• ๋‹น ์‹œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฃผ์†Œ(ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’)์ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’์— ์ ‘๊ทผ

- ๋ณ€์ˆ˜์˜ ๋ณต์‚ฌ๋‚˜ ์ˆ˜์ • ์‹œ ์ฐธ์กฐ ์—ฌ๋ถ€๋ฅผ ์ž˜ ๊ณ ๋ คํ•ด์•ผํ•จ

 

 

๐Ÿ“Œ ์–•์€๋ณต์‚ฌ VS ๊นŠ์€๋ณต์‚ฌ

์–•์€๋ณต์‚ฌ

- ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์›๋ž˜๊ฐ’๊ณผ ๋ณต์‚ฌ๋œ ๊ฐ’์ด ๊ฐ™์€ ์ฐธ์กฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ.

- ex. ์ฐธ์กฐ๊ฐ’

const a = {number: 1};
let b = a;

b.number = 2

console.log(a); // {number: 2}
console.log(b); // {number: 2}

- ๋ฐฉ๋ฒ• : Object.assign(), ์ „๊ฐœ์—ฐ์‚ฐ์ž(...)

 

 

 

๊นŠ์€๋ณต์‚ฌ

- ๊ฐ’์„ ๋ณต์‚ฌํ•  ๋•Œ ๋ณต์‚ฌ๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜์˜ ๊ฐ’๊ณผ ๋ณต์‚ฌ๋œ ๊ฐ’์ด ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ

- ex. ์›์‹œ๊ฐ’

const a = 1;
let b = a;

b = 2

console.log(a); //1
console.log(b); //2

- ๋ฐฉ๋ฒ• : ์žฌ๊ท€ํ•จ์ˆ˜, JSON.stringfy(), lodash๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

 

 

 

์ฐธ๊ณ 

https://velog.io/@nomadhash/Java-Script-%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%AC%EC%99%80-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%AC