Input + Output = True

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ - ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™ ๋ณธ๋ฌธ

๐ŸŽจFrontEnd/Javascript

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ - ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™

IOTrue 2023. 7. 16. 20:27

๐Ÿ˜ŽJavascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ - ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™

๋ฉ”๋ชจ๋ฆฌ (RAM) - Random Access Memory
๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํ“จํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์ปดํ“จํ„ฐ ๋˜๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค

โœ…  ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™์ด๋ž€?

1. ์ฝœ์Šคํƒ(Call Stack)

์›์‹œํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค(string, number, boolean, null, undefined, bigint, symbol)

์‹คํ–‰์ปจํ…์ŠคํŠธ(Execution Context)๋ฅผ ํ†ตํ•ด ์•„๋ž˜ ์ž‘์—…๋“ค์„ ์ œ์–ดํ•œ๋‹ค

  1. ๋ณ€์ˆ˜ ์‹๋ณ„์ž(์ด๋ฆ„) ์ €์žฅ
  2. ์Šค์ฝ”ํ”„ ์ฒด์ธ ๋ฐ this ๊ด€๋ฆฌ
  3. ์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ ๊ด€๋ฆฌ ๋“ฑ์„ ์ˆ˜ํ–‰

2. ๋ฉ”๋ชจ๋ฆฌ ํž™(Memory Heap)

์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค (์›์‹œํƒ€์ž…์„ ์ œ์™ธํ•œ ํƒ€์ž… - ๋ฐฐ์—ด, ๊ฐ์ฒด, ํ•จ์ˆ˜, Date, RegExp ๋“ฑ)

 

โœ…  ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

์ฝœ์Šคํƒ์—๋Š” ์›์‹œํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํž™์—๋Š” ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค

1. ์›์‹œํƒ€์ž… ๋ฐ์ดํ„ฐ (ํŒŒ๋ž€ a)

- ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” 10์ด๋ผ๋Š” ๊ฐ’(number) ์ž์ฒด๋Š” ์›์‹œํƒ€์ž…์ด๋ฏ€๋กœ ์ฝœ์Šคํƒ์— ์ €์žฅ๋œ๋‹ค
- ๋ณ€์ˆ˜ a์—๋Š” 10์ด ์ €์žฅ๋œ ์ฝœ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค
*๋ณ€์ˆ˜ ์‹๋ณ„์ž a ์ž์ฒด๋Š” ์ฝœ์Šคํƒ ์ƒ์˜ '์‹คํ–‰์ปจํ…์ŠคํŠธ(Execution Context)์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical Environment)'์ด๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋œ๋‹ค

2. ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ (๋นจ๊ฐ„ b, c, d)

- ๋ฐฐ์—ด, ๊ฐ์ฒด, ํ•จ์ˆ˜๋Š” ์ฐธ์กฐํƒ€์ž…์ด๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ €์žฅ๋œ๋‹ค
- ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ๋Š” ์ฝœ์Šคํƒ์— ๊ฐ๊ฐ ์ €์žฅ๋œ๋‹ค
- ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์ด ์ €์žฅ๋œ ์ฝœ์Šคํƒ ์ฃผ์†Œ ๊ฐ’์€ ํ•ด๋‹น ๋ณ€์ˆ˜์— ๊ฐ๊ฐ ์ €์žฅ๋œ๋‹ค
*๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ณ€์ˆ˜ ์‹๋ณ„์ž b, c, d ์ด๋ฆ„ ์ž์ฒด๋Š” ์ฝœ์Šคํƒ ์ƒ์˜ '์‹คํ–‰์ปจํ…์ŠคํŠธ(Execution Context)์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical Environment)'์— ์ €์žฅ๋œ๋‹ค

 

โœ…  ์ฝœ ์Šคํƒ, ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

์›์‹œํƒ€์ž…

1. ์›์‹œํƒ€์ž… ๋ณ€์ˆ˜ ์ƒ์„ฑ

์›์‹œํƒ€์ž… ๋ฐ์ดํ„ฐ๋Š” ์ฝœ์Šคํƒ์— ๊ฐ๊ฐ ์ €์žฅ๋˜๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ €์žฅ๋œ ์ฝœ์Šคํƒ์˜ ์ฃผ์†Œ๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜์— ๊ฐ๊ฐ ์ €์žฅ๋œ๋‹ค
๋ณ€์ˆ˜ a, b ์‹๋ณ„์ž ์ž์ฒด๋Š” ์‹คํ–‰์ปจํ…์ŠคํŠธ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ์ €์žฅ๋œ๋‹ค

 

2. ์›์‹œํƒ€์ž… ์žฌํ• ๋‹น - Case1

๋ณ€์ˆ˜ a์— ์ƒˆ๋กœ์šด ๊ฐ’ 20(number)์„ ์žฌํ• ๋‹นํ•˜๋ฉด ๋ณ€์ˆ˜ a๋Š” ๋ณธ์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
๊ธฐ์กด์— 20์ด๋ผ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•˜๊ณ  a์™€ b๋Š” ๋™์ผํ•œ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค

 

3. ์›์‹œํƒ€์ž… ์žฌํ• ๋‹น - Case2

๋ณ€์ˆ˜ b์— ์ƒˆ๋กœ์šด ๊ฐ’ 30(number)์„ ์žฌํ• ๋‹นํ•˜๋ฉด ๋ณธ์ธ์˜ ์ฃผ์†Œ ๊ฐ’์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ 20์ด๋ผ๋Š” ๊ฐ’์„ 30์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•ด์„œ 30์„ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’์„ ๊ธฐ์กด b์— ์ €์žฅ๋œ ์ฃผ์†Œ ๊ฐ’๊ณผ ๊ต์ฒดํ•œ๋‹ค

 

4. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

๋”์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ ์ ˆํ•œ ์‹œ์ ์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋œ๋‹ค

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ
์‚ฌ์šฉ์ฒ˜๊ฐ€ ์—†์–ด์ง„ ๊ฐ์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ

 

์ฐธ์กฐํƒ€์ž…

1. ์ฐธ์กฐํƒ€์ž… ๋ณ€์ˆ˜ ์ƒ์„ฑ

๋ณ€์ˆ˜ a์™€ b์— ํ• ๋‹นํ•˜๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ €์žฅ๋˜๊ณ 

๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์€ ์ฝœ ์Šคํƒ์— ์ €์žฅ๋˜๋ฉฐ, a์™€ b์—๋Š” ํ•ด๋‹น ์ฝœ์Šคํƒ์˜ ์ฃผ์†Œ ๊ฐ’์ด ๊ฐ๊ฐ ์ €์žฅ๋œ๋‹ค

a๋Š” const๋กœ, b๋Š” let์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๋‹ค

 

2. ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ์˜ ๊ฐ’ ๋ณ€๊ฒฝ

๋ณ€์ˆ˜์— ๊ฐ’์„ ์žฌํ• ๋‹นํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ €์žฅ๋œ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ๋Š” ๊ทธ๋Œ€๋กœ๋‹ค

์ฆ‰, ์ฝœ์Šคํƒ์— ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ณ€์ˆ˜ a์™€ b์— ์ €์žฅ๋œ ์ฃผ์†Œ ๊ฐ’๋„ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค

 

3. ์ฐธ์กฐํƒ€์ž… ์žฌํ• ๋‹น

1) let์œผ๋กœ ์„ ์–ธ๋œ ์ฐธ์กฐํƒ€์ž…์˜ ์žฌํ• ๋‹น

let์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๋˜ b์— ์ƒˆ๋กœ์šด ๊ฐ’(๋ฐฐ์—ด)์„ ์žฌํ• ๋‹นํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ƒˆ๋กœ์šด ์ฃผ์†Œ๊ฐ€ ํ™•๋ณด๋˜๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค
๊ทธ๋ฆฌ๊ณ  ์ฝœ์Šคํƒ์— ์ €์žฅ๋˜์—ˆ๋˜ ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ด์ง„๋‹ค
์ด๋•Œ ์ฝœ์Šคํƒ์— ์ €์žฅ๋˜์—ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ”๊พธ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•ด์„œ ๋ฐฉ๊ธˆ ์ „์— ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ b์— ์ €์žฅ๋˜๋Š” ์ฝœ์Šคํƒ์˜ ์ฃผ์†Œ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋œ๋‹ค

์ฐธ์กฐํƒ€์ž…์€ ๋™์ผํ•œ ๊ตฌ์„ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌํ• ๋‹นํ•˜๋”๋ผ๋„ ๋งค๋ฒˆ ์ƒˆ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜์—ฌ ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค

 

2) const๋กœ ์„ ์–ธ๋œ ์ฐธ์กฐํƒ€์ž…์˜ ์žฌํ• ๋‹น

const๋กœ ์„ ์–ธ๋˜์—ˆ๋˜ a์— ๋‹ค๋ฅธ ๋ฐฐ์—ด ๊ฐ’์„ ์žฌํ• ๋‹นํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค
๋‹ค๋ฅธ ๋ฐฐ์—ด ๊ฐ’์„ ์žฌํ• ๋‹นํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์ฝœ์Šคํƒ์—์„œ๋„ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•ด์„œ ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ํž™์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ const๋กœ ์„ ์–ธ๋˜์—ˆ๋˜ a์— ์ €์žฅ๋œ ์ฝœ์Šคํƒ์˜ ์ฃผ์†Œ ๊ฐ’๋„ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค
ํ•˜์ง€๋งŒ const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋ณธ์ธ์—๊ฒŒ ํ• ๋‹น๋œ ์ฝœ์Šคํƒ ์ฃผ์†Œ ๊ฐ’์˜ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ฝ”๋“œ๋Š” ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

์ฆ‰, const๋Š” ๋ณธ์ธ์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํž™ ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
๋ณธ์ธ์—๊ฒŒ ์ €์žฅ๋œ ์ฝœ์Šคํƒ ์ฃผ์†Œ ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค
๋”ฐ๋ผ์„œ const๋กœ ์„ ์–ธํ•  ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐ ๊ฐ’์˜ ํ• ๋‹น์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค

 

๐Ÿ’ก ๋™์ผํ•œ ๊ตฌ์„ฑ์˜ ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ ๋น„๊ต

const personA = {
  name: 'person',
  age: '20'
}

const personB = {
  name: 'person',
  age: '20'
}

const numberA = [1, 2, 3]
const numberB = [1, 2, 3]

๊ฐ์ฒด, ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ฐธ์กฐํƒ€์ž… ๋ฐ์ดํ„ฐ๋Š” ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

๋™์ผํ•œ ๊ตฌ์„ฑ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ ํž™์— ๊ฐ๊ฐ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค

๋”ฐ๋ผ์„œ personA !== personBnumberA !== numberB๊ฐ€ ๋œ๋‹ค

 

 

 

 

 

 

์ฐธ๊ณ 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ์˜ ์ž๋ฃŒ๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค

https://curryyou.tistory.com/276

 

๊ทธ์™ธ ์ฐธ๊ณ 

https://developer.mozilla.org/ko/docs/Glossary/Primitive

https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_management

https://charming-kyu.tistory.com/19

 

 

 

 

Comments