# ์ ํจ ๋ฒ์(Scope)
์ค์ฝํ๋ ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ๋ค๋ฅด๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์๋ ์ ํจ ๋ฒ์๊ฐ ์ ์ญ์ผ๋ก ์์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ๋ณ์ ์ ์ธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ์์ญ์์ ๊ฐ์ ๊ฐ์ ๊ฐ์ต๋๋ค.
var a = 10;
๋ง์ฝ ํจ์๋ฅผ ๋ง๋ค์ด ์๋์ ๊ฐ์ด ์ ๊ทผํ๋๋ผ๋ ๋์ผํ ๊ฐ์ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
var a = 10;
function getA() {
console.log(a);
}
getA(); // 10
# ํจ์ ๋จ์๋ก ๊ตฌ๋ถ๋๋ ๋ณ์ ๋ฒ์
๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์์ ์ ํจ ๋ฒ์๋ ์ ์ญ ๋ฒ์๋ฅผ ๊ฐ๋๋ค๊ณ ํ์ง๋ง, ํจ์ ์์์ ์๋ก ์ ์ธํ๋ ๊ฒฝ์ฐ ํจ์ ๋จ์์ ์๋ก์ด ์ ํจ ๋ฒ์๋ฅผ ๊ฐ์ต๋๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
var a = 10;
function getA() {
var a = 20;
console.log(a);
}
getA(); // 20
console.log(a); // 10
์ ์ฝ๋๋ ํจ์ ๋ฐ๊นฅ์์ ๋ณ์ a
๋ฅผ ์ ์ธํ๊ณ 10์ ๋์
ํ ๋ค, getA()
๋ผ๋ ํจ์๋ฅผ ์ ์ธํ๋ฉด์ ํจ์ ์์ ๋ณ์ a
๋ฅผ ์๋ก ์ ์ธํ๊ณ 20์ ๋์
ํ ์ฝ๋์
๋๋ค. getA()
ํจ์๋ฅผ ์คํํ๋ฉด ํจ์ ์์ ๋ณ์์ธ a
๊ฐ 20์ ๊ฐ์ผ๋ก ์ฝ์์ ์ถ๋ ฅ๋ฉ๋๋ค. ํจ์์ ์คํ์ด ๋๋๊ณ ๋์ console.log(a);
๋ก ๋ค์ a
์ ๊ฐ์ ์ถ๋ ฅํ๋ฉด 10์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋ณ์์ ์ ํจ ๋ฒ์๋ ํจ์ ๋จ์(function)๋ก ํ์ ๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.