๐Ÿธ [JavaScript] ์ „์—ญ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 

hnyoojinยท2024๋…„ 9์›” 5์ผ

๐Ÿธ JS ๋งˆ์Šคํ„ฐ ๋˜๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
13/19
post-thumbnail

์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์œ„ํ—˜ํ•˜๋‹ค.

๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ์™œ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์œ„ํ—˜ํ• ๊นŒ?

๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์ž.


๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ

๋ณ€์ˆ˜๋Š” ์–ธ์  ๊ฐ€ ์†Œ๋ฉธํ•œ๋‹ค.


๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ ๋  ๋•Œ๊นŒ์ง€๋ฅผ life cycle ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด allocate ๋œ ์‹œ์ ๋ถ€ํ„ฐ,
๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด release ๋˜์–ด์„œ ๊ฐ€์šฉ memory pool์— ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ์ ๊นŒ์ง€๋ฅผ ๋งํ•œ๋‹ค.

๋ณดํ†ต ๋ณ€์ˆ˜๋Š” ์ž์‹ ์ด ์„ ์–ธ๋œ ์œ„์น˜์—์„œ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋œ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ์ง€์—ญ๋ณ€์ˆ˜๋Š”?

ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๊ทธ์ œ์•ผ ์ƒ์„ฑ๋˜๊ณ , ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•œ๋‹ค.


์™œ ๊ทธ๋Ÿด๊นŒ?


์•ž์„œ์„œ ๋ณ€์ˆ˜ ์„ ์–ธ์€, ์„ ์–ธ๋ฌธ์˜ ์œ„์น˜์™€๋Š” ์ƒ๊ด€์—†์ด ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ,,,,

์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜์— ํ•œ์ •๋˜๋Š” ์„ค๋ช…์ด๋‹ค.


ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š”,
ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ์งํ›„, body์˜ ์ฝ”๋“œ๊ฐ€ ํ•œ์ค„ํ•œ์ค„ ์‹คํ–‰๋˜๊ธฐ ์ด์ „์— JavaScript ์—”์ง„์— ์˜ํ•ด ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์ง€์—ญ๋ณ€์ˆ˜์˜ life cycle์€ ํ•จ์ˆ˜์˜ life cycle๊ณผ ์ผ์น˜ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


์‚ฌ์‹ค ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ํ•จ์ˆ˜๋ณด๋‹ค ์˜ค๋ž˜ ์ƒ์กดํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋œ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•œ scope์— ๋“ฑ๋ก์ด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜๋Š” ์ž์‹ ์ด ๋“ฑ๋ก๋œ scope๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ๊นŒ์ง€,
์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ ์œ ํšจํ•˜๋‹ค.


๊ทธ๋Ÿฌ๋‹ˆ๊นŒ hosting์€ scope๋‹จ์œ„๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


์ „์—ญ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 

๊ทธ๋ž˜์„œ ์ „์—ญ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ด๋ผ๋Š” ๊ฑธ๊นŒ?

  • ์•”๋ฌต์  ๊ฒฐํ•จ
    ์ฒซ ๋ฌธ์ œ์ ์€, ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    ๋ณ€์ˆ˜์˜ scope๊ฐ€ ํด์ˆ˜๋ก ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์€ ๋–จ์–ด์ง€๊ณ , ์˜๋„์น˜ ์•Š์€ ์ƒํƒœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ ธ
    ๊ฒฐ๊ณผ์ ์œผ๋กœ ์œ„ํ—˜๋„๊ฐ€ ์ƒ์Šนํ•œ๋‹ค.

  • ๊ธด life cycle
    memory source๋ฅผ ์˜ค๋žœ ๊ธฐ๊ฐ„ ์†Œ๋น„ํ•œ๋‹ค.
    ์ด๋กœ ์ธํ•ด ์ด์ค‘ ์ค‘๋ณต, ์˜๋„์น˜์•Š์€ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

  • scope chain ์ƒ์—์„œ ์ข…์ ์— ์กด์žฌ
    scope chain ์ƒ์—์„œ ์ข…์ ์— ์กด์žฌํ•œ๋‹ค๋Š” ๊ฑด, ๋ณ€์ˆ˜ ๊ฒ€์ƒ‰ ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๊ฒ€์ƒ‰๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.
    ์ฆ‰, ๋ณ€์ˆ˜ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.
    ์‚ฌ์‹ค ์ฒ˜์Œ๊ณผ ์ข…์ ์˜ ๊ฒ€์ƒ‰ ์†๋„ ์ฐจ์ด๊ฐ€ ๋ณ„๋กœ ํฌ์ง€๋Š” ์•Š๋‹ค.
    ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฑด, ๋ถ„๋ช…ํ•œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค ๋Š” ์ ์ด๋‹ค.

  • namespace ์˜ค์—ผ
    JavaScript๋Š”, ํŒŒ์ผ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด๋„, ํ•˜๋‚˜์˜ ์ „์—ญ scope๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
    ๋‹ค๋ฅธ ํŒŒ์ผ ๋‚ด์˜ ๋™์ผ ์ด๋ฆ„ ๋ณ€์ˆ˜์— ์˜ํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋ง์ด๋‹ค.



์ „์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์„ ์–ต์ œํ•˜๋Š” ๋ฒ•

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ „์—ญ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผํ•œ๋‹ค.

์ด๋ฅผ ์–ต์ œํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๋ช‡ ๊ฐ€์ง€ ์•Œ์•„๋ณด์ž.

  1. ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜
    ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

  2. namespace ๊ฐ์ฒด
    ์ „์—ญ์— namespace ๋ฅผ ๋‹ด๋‹นํ•  ๊ฐ์ฒด๋ฅผ property๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.
    namespace๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    ๊ทธ๋Ÿฐ๋ฐ, namespace ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฑฐ๋ผ์„œ, ๊ทธ๋‹ฅ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•œ๋‹ค.

  3. ๋ชจ๋“ˆ ํŒจํ„ด
    ํด๋ž˜์Šค๋ฅผ ๋ชจ๋ฐฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
    ๊ด€๋ จ ์žˆ๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜๋ฅผ ๋ชจ์•„์„œ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ ๋ชจ๋“ˆ์„ ๋งŒ๋“ ๋‹ค.

  4. ES6 ๋ชจ๋ธ
    ES6 ๋ชจ๋ธ์—์„œ๋Š”, ๋”์ด์ƒ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    ํŒŒ์ผ ์ž์ฒด์˜ ๋…์ž์  ๋ชจ๋“ˆ scope๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋ชจ๋“ˆ ๋‚ด์˜ var ๋ณ€์ˆ˜๋Š” ๋”์ด์ƒ ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.


๋ถ„๋ช…ํžˆ ๋ณ€์ˆ˜ํŒŒํŠธ,,, ์—์„œ๋Š”,,,, ๋ชจ๋“  ์„ ์–ธ๋ฌธ์€ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜๋ฉฐ,
๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋ฌธ์˜ ์œ„์น˜์™€๋Š” ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ‘์ž๊ธฐ ์‚ฌ์‹ค์€ ์ „์—ญ๋ณ€์ˆ˜์—๋งŒ ํ•ด๋‹นํ•˜๋Š” ์ด์•ผ๊ธฐ์˜€๋‹ค๊ณ  ๋ง์„ ํ•˜๋‹ค๋‹ˆ!!
๋ญ”๊ฐ€,, ์†์€ ๊ธฐ๋ถ„,,

์•„๋ฌดํŠผ ์‹ ๊ธฐํ•œ ์‚ฌ์‹ค.... ์•Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๊ธด ํ–ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€