์ค์ฝํ๋?
๋ณ์(์๋ณ์)์ ์ ํจ ๋ฒ์๋ฅผ ๋ปํ๋ค.
์ค์ฝํ(Scope)๋ ๋ณ์๊ฐ ์ด๋์, ์ด๋ป๊ฒ ์ ์ธ๋์๋์ง์ ๋ฐ๋ผ ๊ทธ ๋ณ์์ ์ ํจํ ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ ๊ท์น์ด๊ธฐ๋ ํ๋ฉฐ,
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด ๊ท์น์ ๋ฐ๋ผ ์ฐธ์กฐ์ ๋์์ด ๋๋ ๋ณ์๋ฅผ ํ์ํด๋๊ฐ๋ค. (→ ๊ทธ๊ฒ์ Scope Chain)
๐์ค์ฝํ์ฒด์ธ?
์๋ฐ์ค ํฌ๋ฆฝํธ ES2015๊ธฐ์ค์ผ๋ก ํ๋ฐ๋
์์ ์ ํจ์๊ฐ ๊ธฐ์ค์ด์๋๋ฐ ์์ฆ์ ๋ธ๋ก์ด ๊ธฐ์ค์ด๋ค( ํจ์๋ ๋คํํ ๋ธ๋ก์ ๊ฐ์ง๊ณ ์๋ค )
์ค์ฝํ ์ฒด์ธ(Scope Chain)์ ์ผ์ข ์ ๋ฆฌ์คํธ๋ก์
์ ์ญ ๊ฐ์ฒด์ ์ค์ฒฉ๋ ํจ์์ ์ค์ฝํ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐจ๋ก๋ก ์ ์ฅํ๊ณ , ์๋ฏธ ๊ทธ๋๋ก ๊ฐ๊ฐ์
์ค์ฝํ๊ฐ ์ด๋ป๊ฒ ์ฐ๊ฒฐ(chain)๋๊ณ ์๋์ง ๋ณด์ฌ์ฃผ๋ ๊ฒ ์ ๋งํ๋ค.
์ ํจ ๋ฒ์๋ฅผ ๋ํ๋ด๋ ์ค์ฝํ๊ฐ scope ํ๋กํผํฐ๋ก ๊ฐ ํจ์ ๊ฐ์ฒด ๋ด์์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ํ์์ผ๋ก ๊ด๋ฆฌ๋๋๋ฐ,
์ด ์ค์ฝํ ๊ฐ์ ์ํ๊ด๊ณ๋ฅผ ์ค์ฝํ ์ฒด์ธ์ด๋ผ๊ณ ํ๋ค.
{ }(์ค๊ดํธ)์ ์ง์ ๋ธ๋ก์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค ( ํจ์๊ฐ ์๋ ๋ธ๋ก๋ค , if, while, for, switch(), { }
๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๋ฉด ์๊ดํธ๋ก ํ๋ฒ ๊ฐ์ธ์ค์ผํ๋ค ({ })
๋์ ๋ง๋ฃจ์์ ๋ฎ์ ์์น์ ์ฑ์ฑ ๋ด๋ถ์ ๋ฐ๊นฅ์ ๋ญ๊ฐ ์๋์ง ๊ด์ฐฐ(์ฐธ์กฐ)ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ฑ๋ฒฝ์ ์์ผ๊ฐ ๊ฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ๊นฅ์์ ๋ด๋ถ๋ฅผ ๊ด์ธกํ ์ ์๋ค.
ํจ์์ ์ฝ๋ ๋ธ๋ญ์ ์ฑ๋ฒฝ๊ณผ ๊ฐ๋ค. ์ฝ๋ ๋ธ๋ญ ์์ชฝ์ ์์ ์๋ก ๋ฐ๊นฅ์ ๊ด์ธกํ ์ ์์ง๋ง ์ฝ๋ ๋ธ๋ญ ๋ฐ๊นฅ์์ ๋ด๋ถ์ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
๋ธ๋ก ์ค์ฝํ์์ ์ง์ญ ๋ณ์ y๋ ์ ์ญ ๋ณ์ x๊ฐ์ ์ฐธ์กฐํ ์ ์๊ณ , ๋ฐํ๋๋ ํจ์์ ์ง์ญ ๋ณ์z๋ y์ ๊ฐ์ ์ฐธ์กฐํ ์ ์๋ค.
๋์ ๋ง๋ฃจ(๋ด๋ถ ์ฝ๋ ๋ธ๋ญ)์ ์๋๋ผ๋ ์์ ํ ๋ค๋ฅธ ์ฝ๋ ๋ธ๋ญ์ ์ํด์๋ ์ง์ญ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
์ฝ๋ ๋ธ๋ญ์ ์คํ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์คํ์ด ๋๋๋ฉด ๋ ์ด์ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ฑ์ด ๋ค๋ฅธ ์์น์์
์ฐธ์กฐํ ์ ์๋ค.
์์ ์ด ์ํด์๋ ์ง์ญ์ ๋ณ์๋ค์ ์ฐธ์กฐํ ์ ์๊ฒ ๋๋ฉฐ, ํด๋น ์ฝ๋ ๋ ๋ฒจ์ ์ฐธ์กฐ๊ฐ์ด ์๋ค๋ฉด ์์ ๋ ๋ฒจ์ ์ค์ฝํ๋ก ์ฐธ์กฐ ๊ฐ์ ์ฐพ์ ๋๊ฐ๋ ํ์์ ์ค์ฝํ ์ฒด์ธ(Scope Chain)์ด๋ผ๊ณ ํ๋ค. ์ ์ญ ์ค์ฝํ์๋ ์ฐธ์กฐ๊ฐ์ด ์๋ค๋ฉด null์ ๋ฐํํ๊ฒ ๋๋ค.
๐๊ฒฐ๋ก
์๊ธฐ ์์ ์ ์ค์ฝํ(scope)๋ฅผ ์ ์ธํ ์์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ณ์ ๊ฐ์ฒด์ ๋ชจ๋ ์ค์ฝํ๋ค์ ์ค์ฝํ ์ฒด์ธ์ด๋ผ ํ ์ ์๋ค.
๐์ถ์ฒ
์ดํดํ๋๋ฐ ๋ง์ ๋์์ ์ฃผ์ Wonkook Lee ๊ฐ์ฌํฉ๋๋ค.
'๐Technical interview(Front)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ผ์ฐ์ ์ ์ฅ์ ์ฐจ์ด์ ( Localstorage, SessionStorage, Cookie ) (0) | 2022.11.16 |
---|---|
Promise (0) | 2022.11.16 |
[JavaScript] Scope๋? (0) | 2022.11.05 |
์ฝ๋ฐฑ ํจ์(Callback) (0) | 2022.11.03 |
Closure ํด๋ก์ (0) | 2022.10.23 |