๋ณ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ค. ๊ทธ๋ฌ๋๊น, ํน์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ฒ์ด ์๋, ํน์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ค. ๋ณ์์ ๊ฐ์ด ์ฌํ ๋น๋ ๋ ํด๋น ๊ฐ์ด ์คํ์ ์กด์ฌํ๋ฉด ๊ทธ ์คํ ์ฃผ์๋ก ํ ๋น๋๋ค๋ ๋ด์ฉ์ ๋ณธ ๊ฒ ๊ฐ์๋ฐ, ๊ฐ์ด ๊ฐ๋๋ผ๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ด ์ ์ฅ๋๋ ์ค ์์๋๋ฐ ๊ทธ๊ฒ ์๋์ด์ ์ข ๋ ์ ํํ๊ฒ ๊ณต๋ถํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
๋ณ์์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค.
๋ฉ๋ชจ๋ฆฌ๋ 4๊ฐ์ ์์ญ์ด ์๊ณ , ์ ์ญ๋ณ์, ์ง์ญ๋ณ์, ์ฝ๋, ๋์ ํ ํ ๋น์ ๋ฐ๋ผ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ์์ญ๊ณผ ์ฝ์คํ์ ์ฌ์ฉํ๋ค.
์ฝ์คํ
์์ ํ์
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
๋ณ์์ ์ ์ฅ๋๋ ๊ฒ : ์ฝ์คํ์ ์ฃผ์
๋ฉ๋ชจ๋ฆฌ ํ(heap ์์ญ)
์ฐธ์กฐ ํ์
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค. (๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์ ๋ฑ)
๋ฉ๋ชจ๋ฆฌ ํ์ ์ ์ฅ๋๋ ๊ฒ : ๊ฐ
์ฝ์คํ์ ์ ์ฅ๋๋ ๊ฒ : ๊ฐ์ด ์ ์ฅ๋ ํ์ ์ฃผ์
๋ณ์์ ์ ์ฅ๋๋ ๊ฒ : ์ฝ์คํ ์ฃผ์
๋ณ์ ์ข ๋ฅ๋ณ ํ ๋น๊ณผ ์ฌํ ๋น ๊ณผ์
1. ์์ ํ์
1.1 ์์ ํ์ ์ ํ ๋น ๊ณผ์
let a = 10;
- ์์์ ์ธ๊ธํ๋ฏ, ์์ํ์ ์ ์ฝ์คํ์ ์ ์ฅ๋๋ค.
- ์์ํ์ ์ ๊ฐ์ ์ฝ์คํ์ ์ ์ฅํ๊ณ , ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ณ์์ ์ ์ฅํ๋ค.
1.2 ์์ ํ์ ์ ์ฌํ ๋น ๊ณผ์ (์กด์ฌํ๋ ๊ฐ์ผ๋ก ํ ๋น)
let a = 10;
let b = 20;
a = 20;
- a, b๋ ์์ํ์ ์ด ํ ๋นํ๋ ๊ณผ์ ์ ๊ทธ๋๋ก ์งํํ๊ธฐ ๋๋ฌธ์ 10๊ณผ 20์ด ์ฝ์คํ์ ์ ์ฅ๋์ด ์๋ค.
- a์ ๊ฐ์ 20์ผ๋ก ์ฌํ ๋นํ๋ค๋ฉด, 10์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์์ 20์ผ๋ก ๋ณ๊ฒฝ๋๊ฑฐ๋ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง๋ จํด 20์ ์ ์ฅํ๋ ๊ฒ์ด ์๋, ๊ธฐ์กด์ b๊ฐ ์ฐธ์กฐํ๊ณ ์๋ 20์ด ์ ์ฅ๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ด a์ ์ ์ฅ๋๊ฒ ๋๋ค.
- ๋ฐ๋ผ์ a์ b๊ฐ ์ ์ฅํ๊ณ ์๋ ์ฃผ์๊ฐ์ ๊ฐ๋ค.
1.3 ์์ ํ์ ์ ์ฌํ ๋น ๊ณผ์ (์๋ก์ด ๊ฐ์ผ๋ก ํ ๋น)
a = 30;
- a์ 30์ ์ฌํ ๋น ํ๋ค๋ฉด, ์ฝ์คํ์ 30์ ์ ์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํด์ 30์ ์ ์ฅํ๊ณ a์ ํด๋น ์ฝ์คํ์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ค.
1.4 ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ป๊ฒ ๋ ๊น?
- a๊ฐ ์ฒ์์ ํ ๋นํ๋ 10์ ์ด์ ๋์ด์ ์ฌ์ฉ๋๊ณ ์์ง ์๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ๋๋ ๋์ด์ ์ฐธ์กฐ๋์ง ์๋ ๋ฐ์ดํฐ 10์ ์ญ์ ํ๋ค.
2. ์ฐธ์กฐ ํ์
2.1 ์ฐธ์กฐ ํ์ ์ ํ ๋น ๊ณผ์
const arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
- ํ์์ญ์๋ ์์ ํ์ ์ด ์๋ ํ์ ๋ค์ด ์ ์ฅ๋๋ค. ๋์ ์ธ ํ์ ๋ค์ ๊ฐ์๊ธฐ ๋ฐ์ดํฐ๊ฐ ์ปค์ง๊ฑฐ๋ ์์์ง ์ ์๋๋ฐ ์ด๋ฌํ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ค์ ํ์์ญ์ ์ ์ฅํ ์ ์๋ค๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
- ๊ทธ๋ ๋ค๊ณ ์ฝ์คํ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์๋๋ค.
- ๋ฐฐ์ด์ ๊ฐ๋ค์ ํ ์์ญ์ ์ ์ฅ๋๊ณ ํ์์ญ์ ์ฃผ์๊ฐ์ด ์ฝ์คํ์ ์ ์ฅ๋๋ฉฐ ์ฝ์คํ์ ์ฃผ์๊ฐ์ด ๋ณ์์ ์ ์ฅ๋๋ ๊ฒ์ด๋ค.
2.2 ์ฐธ์กฐ ํ์ ์ ์ฌํ ๋น ๊ณผ์
const arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.push(5); // [1, 2, 3, 4, 5]
arr.pop(); // [1, 2, 3, 4]
- ์ฐธ์กฐ ํ์ ์ ๋ณ์์๋ ์ฝ์คํ์ ์ฃผ์๊ฐ์ด ๋ค์ด๊ฐ์๊ธฐ ๋๋ฌธ์ const๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํด๋ ์ฐธ์กฐ ๊ฐ์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
const arr1 = [1, 2, 3];
arr1 = [4, 5, 6]; // TypeError: Assignment to constant variable.
let arr2 = [1, 2, 3];
arr2 = [4, 5, 6]; // ์ ์์ ์ผ๋ก ์ฌํ ๋น ๋จ
- ํ์ง๋ง ์ ์ฝ๋์ ๊ฐ์ด const๋ก ์ ์ธ๋ ์ฐธ์กฐ ํ์ ์ ๋ณ์๋ ์ฝ์คํ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ผ ๊ฐ์ด๋
์ ์ฐธ์กฐ ํ์
์ ์์์ ๊ฐ์ด ์ฐธ์กฐํ์
์ ๊ฒฝ์ฐ๋ ์ฌํ ๋น์ด ์ด๋ฃจ์ด์ ธ์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด const๋ก ์ ์ธํ๋ ๊ฒ์ด ์ข๋ค.
๊ตฌ๊ธ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ผ ๊ฐ์ด๋๋ก ์๋์ ๊ฐ์ ๋ด์ฉ์ด ์๋๋ฐ ์ ๊ทธ๋ฐ์ง ์ด์ ์ ํจ๊ป ์ ๊ณ ๋ง๋ฌด๋ฆฌํ๊ฒ ๋ค.
- ๋ชจ๋ ์ง์ญ ๋ณ์๋ฅผ const๋ let์ผ๋ก ์ ์ธํด๋ผ.
- ๋ณ์๋ฅผ ์ฌํ ๋นํ์ง ์๋ ํ, ๊ธฐ๋ณธ์ ์ผ๋ก const๋ฅผ ์ฌ์ฉํด๋ผ.
- var ํค์๋๋ ์ ๋ ์ฌ์ฉํ์ง ๋ง๋ผ.
์ด์
- ๋ฏธ๋์ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์๋ค.
- const๋ฅผ ํตํด ์ ์ธ๋ ๋ณ์๋ ๋ฐ๋์ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๊ฐ ๋์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ค์ฝํ์ ์ธ ์ธก๋ฉด์์ ๋์ฑ ์ ์คํ๊ฒ ๋ณ์๋ฅผ ๋ฐฐ์นํด์ผ ํจ์ ๊ฐ์๋ฐ๊ฒ ๋๋ค. ์ด๋ ๊ถ๊ทน์ ์ผ๋ก ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ฑ๋ฅ์ผ๋ก ์ด์ด์ง๊ฒ ๋๋ค.
- ๋จ์ง ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ์ด๋ค ๋ณ์๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๊ณ , ๋ ์ด๋ค ๋ณ์๊ฐ ์ฌํ ๋น์ด ๊ฐ๋ฅํ์ง ์์ฌ์ํตํ ์ ์๋ค.
์ฐธ์กฐ
https://okky.kr/questions/1314322
OKKY - ์๋ฐ์คํฌ๋ฆฝํธ ์ ์ญ๋ณ์๋ ์ด๋ ์์ญ์ ์ ์ฅ๋๋์?(call stack, heap)
๊ธฐ๋ณธ์ ์ธ ์ปดํจํฐ ์ง์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ 4๊ฐ์ ์์ญ์ด ์๊ณ ์ ์ญ๋ณ์, ์ง์ญ๋ณ์, ์ฝ๋, ๋์ ํ ํ ๋น์ ๋ฐ๋ผ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฆ ๋๋ค.๊ทธ๋ฐ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ "Call Stack" ๊ณผ "Heap" ๋ ๊ฐ์ง ์์ญ์
okky.kr
https://velog.io/@pppp0722/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0-
%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ดํดํ๊ธฐ
๋ฉ๋ชจ๋ฆฌ๋? ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ์ต ์ฅ์น๋ก ๋ฌผ๋ฆฌ(๋ฉ์ธ) ๋ฉ๋ชจ๋ฆฌ(RAM), ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(SSD, HDD์ swap ์์ญ)๊ฐ ์กด์ฌํ๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ : ํ์ํ ๋ด์ฉ๋ง ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ์ผ๋ก
velog.io
https://gritdonghee.notion.site/let-const-9fa10728553644fb88ab61b415c129e9
์ฝ์คํ/๋ฉ๋ชจ๋ฆฌํ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ํ์ ์ ์ฌํ ๋น ๊ณผ์ (let/const) | Notion
https://charming-kyu.tistory.com/19
gritdonghee.notion.site
https://charming-kyu.tistory.com/19
[javascript] ์ฝ์คํ/๋ฉ๋ชจ๋ฆฌํ ๊ตฌ์กฐ, ๋ฐ์ดํฐ ์ ์ฅ/์ฐธ์กฐ ์๋ฆฌ
์ฝ ์คํ, ๋ฉ๋ชจ๋ฆฌ ํ์ด๋? ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ Memory Heap ๊ณผ Call Stack ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ ๋ช ํ ๊ฒ์ด ๊ตฌ๊ธ์ V8 Engine์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋จ์ผ ์ค๋ ๋ (sigle thread) ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ
charming-kyu.tistory.com