๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‹Technical interview(Front)

[JavaScript] ์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ž€?

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2022. 11. 9.

์Šค์ฝ”ํ”„๋ž€?

๋ณ€์ˆ˜(์‹๋ณ„์ž)์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. 

์Šค์ฝ”ํ”„(Scope)๋Š” ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””์„œ, ์–ด๋–ป๊ฒŒ ์„ ์–ธ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๊ทธ ๋ณ€์ˆ˜์˜ ์œ ํšจํ•œ ๋ฒ”์œ„๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๊ทœ์น™์ด๊ธฐ๋„ ํ•˜๋ฉฐ,

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ด ๊ทœ์น™์— ๋”ฐ๋ผ ์ฐธ์กฐ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•ด๋‚˜๊ฐ„๋‹ค. (→ ๊ทธ๊ฒƒ์„ Scope Chain)

๐Ÿ”—์Šค์ฝ”ํ”„์ฒด์ธ?

์ž๋ฐ”์Šค ํฌ๋ฆฝํŠธ ES2015๊ธฐ์ค€์œผ๋กœ ํ™•๋ฐ”๋€œ
์˜ˆ์ „์—” ํ•จ์ˆ˜๊ฐ€ ๊ธฐ์ค€์ด์˜€๋Š”๋ฐ ์š”์ฆ˜์—” ๋ธ”๋ก์ด ๊ธฐ์ค€์ด๋‹ค( ํ•จ์ˆ˜๋„ ๋‹คํ–‰ํžˆ ๋ธ”๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค )
์Šค์ฝ”ํ”„ ์ฒด์ธ(Scope Chain)์€ ์ผ์ข…์˜ ๋ฆฌ์ŠคํŠธ๋กœ์„œ
์ „์—ญ ๊ฐ์ฒด์™€ ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐจ๋ก€๋กœ ์ €์žฅํ•˜๊ณ , ์˜๋ฏธ ๊ทธ๋Œ€๋กœ ๊ฐ๊ฐ์˜ 
์Šค์ฝ”ํ”„๊ฐ€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ(chain)๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ์„ ๋งํ•œ๋‹ค.

์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์Šค์ฝ”ํ”„๊ฐ€ scope ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ ํ•จ์ˆ˜ ๊ฐ์ฒด ๋‚ด์—์„œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š”๋ฐ,
์ด ์Šค์ฝ”ํ”„ ๊ฐ„์˜ ์ƒํ•˜๊ด€๊ณ„๋ฅผ ์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

{ }(์ค‘๊ด„ํ˜ธ)์˜ ์ง์„ ๋ธ”๋ก์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค ( ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ธ”๋ก๋“ค , if, while, for, switch(), { } 

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์†Œ๊ด„ํ˜ธ๋กœ ํ•œ๋ฒˆ ๊ฐ์‹ธ์ค˜์•ผํ•œ๋‹ค ({ }) 

๋†’์€ ๋ง๋ฃจ์—์„  ๋‚ฎ์€ ์œ„์น˜์˜ ์„ฑ์ฑ„ ๋‚ด๋ถ€์™€ ๋ฐ”๊นฅ์— ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ๊ด€์ฐฐ(์ฐธ์กฐ)ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋ฒฝ์— ์‹œ์•ผ๊ฐ€ ๊ฐ€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๊นฅ์—์„œ ๋‚ด๋ถ€๋ฅผ ๊ด€์ธกํ•  ์ˆ˜ ์—†๋‹ค.

 

ํ•จ์ˆ˜์˜ ์ฝ”๋“œ ๋ธ”๋Ÿญ์€ ์„ฑ๋ฒฝ๊ณผ ๊ฐ™๋‹ค. ์ฝ”๋“œ ๋ธ”๋Ÿญ ์•ˆ์ชฝ์— ์žˆ์„ ์ˆ˜๋ก ๋ฐ”๊นฅ์„ ๊ด€์ธกํ•  ์ˆœ ์žˆ์ง€๋งŒ ์ฝ”๋“œ ๋ธ”๋Ÿญ ๋ฐ”๊นฅ์—์„œ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆœ ์—†๋‹ค.
๋ธ”๋ก ์Šค์ฝ”ํ”„์—์„œ ์ง€์—ญ ๋ณ€์ˆ˜ y๋Š” ์ „์—ญ ๋ณ€์ˆ˜ x๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜ํ™˜๋˜๋Š” ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜z๋Š” y์˜ ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋†’์€ ๋ง๋ฃจ(๋‚ด๋ถ€ ์ฝ”๋“œ ๋ธ”๋Ÿญ)์— ์žˆ๋”๋ผ๋„ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ฝ”๋“œ ๋ธ”๋Ÿญ์— ์†ํ•ด์žˆ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆœ ์—†๋‹ค.

์ฝ”๋“œ ๋ธ”๋Ÿญ์˜ ์‹คํ–‰์€ ๋…๋ฆฝ์ ์ด๋ฉฐ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋” ์ด์ƒ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋”์šฑ์ด ๋‹ค๋ฅธ ์œ„์น˜์—์„œ

์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.

 

์ž์‹ ์ด ์†ํ•ด์žˆ๋Š” ์ง€์—ญ์˜ ๋ณ€์ˆ˜๋“ค์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉฐ, ํ•ด๋‹น ์ฝ”๋“œ ๋ ˆ๋ฒจ์— ์ฐธ์กฐ๊ฐ’์ด ์—†๋‹ค๋ฉด ์ƒ์œ„ ๋ ˆ๋ฒจ์˜ ์Šค์ฝ”ํ”„๋กœ ์ฐธ์กฐ ๊ฐ’์„ ์ฐพ์•„ ๋‚˜๊ฐ€๋Š” ํ˜„์ƒ์„ ์Šค์ฝ”ํ”„ ์ฒด์ธ(Scope Chain)์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ „์—ญ ์Šค์ฝ”ํ”„์—๋„ ์ฐธ์กฐ๊ฐ’์ด ์—†๋‹ค๋ฉด null์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

๐Ÿ†๊ฒฐ๋ก 

์ž๊ธฐ ์ž์‹ ์˜ ์Šค์ฝ”ํ”„(scope)๋ฅผ ์ œ์™ธํ•œ ์ž์‹ ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ณ€์ˆ˜ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์Šค์ฝ”ํ”„๋“ค์„ ์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“š์ถœ์ฒ˜

์ดํ•ดํ•˜๋Š”๋ฐ ๋งŽ์€ ๋„์›€์„ ์ฃผ์‹  Wonkook Lee ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

์Šค์ฝ”ํ”„์™€ ์Šค์ฝ”ํ”„ ์ฒด์ธ | JavaScript Basics

์Šค์ฝ”ํ”„๋ž€ ์‹๋ณ„์ž์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค.์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์–ด๋Š ๋ฒ”์œ„๊นŒ์ง€ ์œ ํšจํ• ๊นŒ? ์–ด๋””์„œ๋‚˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฉด ์•ˆ๋ ๊นŒ? ์Šค์ฝ”ํ”„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.์˜๋„์น˜ ์•Š์€ ๋ณ€์ˆ˜ ๊ฐ’์˜ ๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํŠน

velog.io

 

728x90