\
[๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„] Front-end ์œ„์ฃผ๋กœ ๋ณด๋Š” ์ปดํ“จํ„ฐ ๊ตฌ์กฐ
ยท
๐Ÿ“š STUDY/CS & ๋„คํŠธ์›Œํฌ
๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฆฌ์ŠคํŠธ๋ฌธ์ œ ๋ฆฌ์ŠคํŠธCPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋‚˜?ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”๊ฐ€?๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€?์ง€์—ญ์„ฑ(Locality)์ด๋ž€?์Šคํƒ(Stack)๊ณผ ํž™(Heap)์˜ ์ฐจ์ด๋Š”?์ฝœ ์Šคํƒ(Call Stack)์ด๋ž€?์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ๊ณผ ์ด์œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ์™œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ ์ด์–ด์ง€๋‚˜์š”?๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ์— ์ฃผ๋Š” ์ด์ ์€?์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด๋ž€?๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์ด UI๋ฅผ ๋ฉˆ์ถ”๊ฒŒํ•˜๋Š” ์ด์œ Web Worker๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€์š”? ๋“ค์–ด๊ฐ€๊ธฐ ์ „,์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋ผ๋Š” ๊ณผ๋ชฉ์€, ๋ง ๊ทธ๋Œ€๋กœ ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ํ•™๋ฌธ์œผ๋กœ ๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋„˜์–ด ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ, ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋ผ..
[JavaScript] JavaScript๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ
ยท
๐Ÿ“š STUDY/WEB
๋“ค์–ด๊ฐ€๋ฉฐ"ํ˜ธ์ด์ŠคํŒ…์ด ์™œ ์ผ์–ด๋‚ ๊นŒ?", "์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?", "this๋Š” ์™œ ์ƒํ™ฉ๋งˆ๋‹ค ๋‹ฌ๋ผ์งˆ๊นŒ?" JavaScript๋ฅผ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด, ์ด ์งˆ๋ฌธ๋“ค์€ ํ•œ ๋ฒˆ์ฏค ์ƒ๊ฐํ•ด๋ณด์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€๋Š” ๋”ฐ๋กœ ์™ธ์›Œ์•ผ ํ•  ๋ณ„๊ฐœ์˜ ๊ทœ์น™์ด ์•„๋‹Œ, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ผ๋Š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด ์ „๋ถ€ ๊ฐ™์€ ์›๋ฆฌ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋‚ด๋ถ€์— ๋ฌด์—‡์„ ๋‹ด๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.์ปจํ…์ŠคํŠธ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์•ž์„œ, ์ปจํ…์ŠคํŠธ๋ž€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.์ปจํ…์ŠคํŠธ(Context)๋ž€ ์ƒํ™ฉ, ๋งฅ๋ฝ, ๋ฌธ๋งฅ ์ƒ์˜ ์˜๋ฏธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๋‹ต๊ฒŒ ํ•ด์„ํ•ด๋ณด๋ฉด, ํ…์ŠคํŠธ์˜ ๋‚ด์šฉ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ…์ŠคํŠธ๊ฐ€ ์‚ฌ์šฉ๋œ ์ƒํ™ฉ, ์ด์ „ ๋ฌธ๋งฅ, ์ดํ›„ ๋งฅ๋ฝ ๋“ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฌถ์Œ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค..
[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ(Stack)
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ“ฆ ์Šคํƒ(Stack)์Šคํƒ(Stack)์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋„ฃ๊ณ  ๊บผ๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ›„์ž…์„ ์ถœ(LIFO, Last In First Out)๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.์˜ˆ๋ฅผ๋“ค์–ด, ์ ‘์‹œ๋ฅผ ์Œ“์•„๋‘๊ณ  ์œ„์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“ ๋™์ž‘ ๋ฐฉ์‹์Šคํƒ์˜ ํ•ต์‹ฌ์€ “์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.” ์ž…๋‹ˆ๋‹ค. 1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(push)์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.2. ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ(pop)๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.3. ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ํ™•์ธ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.4. ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ธ๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.JavaScrip..