๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์Šค์ฝ”ํ”„2

[JavaScript] ์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ž€? ์Šค์ฝ”ํ”„๋ž€? ๋ณ€์ˆ˜(์‹๋ณ„์ž)์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. ์Šค์ฝ”ํ”„(Scope)๋Š” ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””์„œ, ์–ด๋–ป๊ฒŒ ์„ ์–ธ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๊ทธ ๋ณ€์ˆ˜์˜ ์œ ํšจํ•œ ๋ฒ”์œ„๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๊ทœ์น™์ด๊ธฐ๋„ ํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ด ๊ทœ์น™์— ๋”ฐ๋ผ ์ฐธ์กฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•ด๋‚˜๊ฐ„๋‹ค. (→ ๊ทธ๊ฒƒ์„ Scope Chain) ๐Ÿ”—์Šค์ฝ”ํ”„์ฒด์ธ? ์ž๋ฐ”์Šค ํฌ๋ฆฝํŠธ ES2015๊ธฐ์ค€์œผ๋กœ ํ™•๋ฐ”๋€œ ์˜ˆ์ „์—” ํ•จ์ˆ˜๊ฐ€ ๊ธฐ์ค€์ด์˜€๋Š”๋ฐ ์š”์ฆ˜์—” ๋ธ”๋ก์ด ๊ธฐ์ค€์ด๋‹ค( ํ•จ์ˆ˜๋„ ๋‹คํ–‰ํžˆ ๋ธ”๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค ) ์Šค์ฝ”ํ”„ ์ฒด์ธ(Scope Chain)์€ ์ผ์ข…์˜ ๋ฆฌ์ŠคํŠธ๋กœ์„œ ์ „์—ญ ๊ฐ์ฒด์™€ ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐจ๋ก€๋กœ ์ €์žฅํ•˜๊ณ , ์˜๋ฏธ ๊ทธ๋Œ€๋กœ ๊ฐ๊ฐ์˜ ์Šค์ฝ”ํ”„๊ฐ€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ(chain)๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ์„ ๋งํ•œ๋‹ค. ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์Šค์ฝ”ํ”„๊ฐ€ scope ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ ํ•จ์ˆ˜ ๊ฐ์ฒด ๋‚ด์—์„œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ.. 2022. 11. 9.
[JavaScript] Scope๋ž€? ๐Ÿ‘‍๐Ÿ—จ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„(function-level scope)๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ž€ ํ•จ์ˆ˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๊ณ  ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋Š” ์œ ํšจํ•˜์ง€ ์•Š๋‹ค(์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค)๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿ‘‰๐Ÿป๋‹จ, ECMAScript 6์—์„œ ๋„์ž…๋œ let keyword๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป Scope๋ž€? Scope๋Š” ์ง์—ญํ•˜๋ฉด "๋ฒ”์œ„"๋ผ๋Š” ๋œป์ด๋‹ค. JavaScript ์—์„œ Scope(์Šค์ฝ”ํ”„)๋Š” ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. ์‹๋ณ„์ž(๋ณ€์ˆ˜)๋ฅผ ์ฐพ๊ธฐ์œ„ํ•œ ๊ทœ์น™์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์‹๋ณ„์ž์˜ ์œ ํšจ ๋ฒ”์œ„ ⇒ ๋ชจ๋“  ์‹๋ณ„์ž๋Š” ์ž์‹ ์ด ์„ ์–ธ๋œ ์œ„์น˜์— ์˜ํ•˜์—ฌ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์‹๋ณ„์ž ์ž์‹ ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจ ๋ฒ”์œ„๊ฐ€ ๊ฒฐ์ •๋จ. var x = 'global'; f.. 2022. 11. 5.