๋ชจ๋ ์๋ณ์(๋ณ์ ์ด๋ฆ, ํจ์ ์ด๋ฆ, ํด๋์ค ์ด๋ฆ ๋ฑ)๋ ์์ ์ด ์ ์ธ๋ ์์น์ ์ํด ๋ค๋ฅธ ์ฝ๋๊ฐ ์๋ณ์ ์์ ์ ์ฐธ์กฐํ ์ ์๋ ์ ํจ ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ค. ์ด๋ฅผ ์ค์ฝํ๋ผ ํ๋ค. ์ฆ, ์ค์ฝํ๋ ์๋ณ์๊ฐ ์ ํจํ ๋ฒ์๋ฅผ ๋งํ๋ค.
var x = 'global';
function foo() {
var x = 'local';
console.log(x);
}
foo();
console.log(x);
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ด๋ฆ์ด ๊ฐ์ ๋ ๊ฐ์ ๋ณ์ ์ค์์ ์ด๋ค ๋ณ์๋ฅผ ์ฐธ์กฐํด์ผ ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค. ์ด๋ฅผ ์๋ณ์ ๊ฒฐ์ ์ด๋ผ ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ค์ฝํ๋ฅผ ํตํด ์ด๋ค ๋ณ์๋ฅผ ์ฐธ์กฐํด์ผ ํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ค. ๋ฐ๋ผ์ ์ค์ฝํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์๋ณ์๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ ๊ท์น์ด๋ผ๊ณ ๋ ํ ์ ์๋ค.
์ ์ญ์ด๋ ์ฝ๋์ ๊ฐ์ฅ ๋ฐ๊นฅ ์์ญ์ ๋งํ๋ค. ์ ์ญ์ ์ ์ญ ์ค์ฝํ๋ฅผ ๋ง๋ ๋ค. ์ ์ญ์ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ์ ์ญ ์ค์ฝํ๋ฅผ ๊ฐ๋ ์ ์ญ ๋ณ์๊ฐ ๋๋ค. ์ ์ญ ๋ณ์๋ ์ด๋์๋ ์ง ์ฐธ์กฐํ ์ ์๋ค.
์ง์ญ์ด๋ ํจ์ ๋ชธ์ฒด ๋ด๋ถ๋ฅผ ๋งํ๋ค. ์ง์ญ ๋ณ์๋ ์์ ์ ์ง์ญ ์ค์ฝํ์ ํ์ ์ง์ญ ์ค์ฝํ์์ ์ ํจํ๋ค
์ค์ฒฉ๋ ํจ์๋ค์ด ์ง์ญ ์ค์ฝํ๋ฅผ ๊ฐ์ง ๋์ ๊ฐ์ด ์ค์ฝํ๊ฐ ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ์ค์ฝํ ์ฒด์ธ์ด๋ผ๊ณ ํ๋ค.
์ง์ญ์ ํจ์ ๋ชธ์ฒด ๋ด๋ถ๋ฅผ ๋งํ๊ณ ์ง์ญ์ ์ง์ญ ์ค์ฝํ๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ค. ์ด๋ ์ฝ๋ ๋ธ๋ก์ด ์๋ ํจ์์ ์ํด์๋ง ์ง์ญ ์ค์ฝํ๊ฐ ์์ ๋๋ค๋ ์๋ฏธ๋ค.
C๋ ์๋ฐ ๋ฑ์ ๋น๋กฏํ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํจ์ ๋ชธ์ฒด๋ง์ด ์๋๋ผ ๋ชจ๋ ์ฝ๋ ๋ธ๋ก(if, for, while, try/catch ๋ฑ)์ด ์ง์ญ ์ค์ฝํ๋ฅผ ๋ง๋ ๋ค. ์ด๋ฌํ ํน์ฑ์ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ผ ํ๋ค.
var ํค์๋๋ก ์ ์ธ๋ ๋ณ์๋ ์ค๋ก์ง ํจ์์ ์ฝ๋ ๋ธ๋ก(ํจ์ ๋ชธ์ฒด)๋ง์ ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๋ค. ์ด๋ฌํ ํน์ฑ์ ํจ์ ๋ ๋ฒจ ์ค์ฝํ๋ผ ํ๋ค.
ES6์์ ๋์ ๋ let, const ํค์๋๋ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ์ง์ํ๋ค.
var x = 1;
function foo(){
var x = 10;
bar();
}
function bar(){
console.log(x);
}
foo(); // ?
bar(); // ?
- ํจ์๋ฅผ ์ด๋์ ํธ์ถํ๋์ง์ ๋ฐ๋ผ ํจ์์ ์์ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํ๋ค.
๋์ ์ค์ฝํ๋ผํ๋ค. ํจ์๋ฅผ ์ ์ํ๋ ์์ ์๋ ํจ์๊ฐ ์ด๋์ ํธ์ถ๋ ์ง ์ ์ ์๋ค. ๋ฐ๋ผ์ ํจ์๊ฐ ํธ์ถ๋๋ ์์ ์ ๋์ ์ผ๋ก ์์ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์ ์ค์ฝํ๋ผ๊ณ ๋ถ๋ฅธ๋ค.- ํจ์๋ฅผ ์ด๋์ ์ ์ํ๋์ง์ ๋ฐ๋ผ ํจ์์ ์์ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ ์์ปฌ ์ค์ฝํ ๋๋ ์ ์ ์ค์ฝํ๋ผ ํ๋ค. ๋์ ์ค์ฝํ ๋ฐฉ์์ฒ๋ผ ์ฌ์ฐ์ด ์ค์ฝํ๊ฐ ๋์ ์ผ๋ก ๋ณํ์ง ์๊ณ ํจ์ ์ ์๊ฐ ํ๊ฐ๋๋ ์์ ์ ์์ ์ค์ฝํ๊ฐ ์ ์ ์ผ๋ก ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ์ ์ ์ค์ฝํ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋กฏํ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅธ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก ํจ์๋ฅผ ์ด๋์ ํธ์ถํ๋์ง๊ฐ ์๋๋ผ ํจ์๋ฅผ ์ด๋์ ์ ์ํ๋์ง์ ๋ฐ๋ผ ์์ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํ๋ค. ํจ์๊ฐ ํธ์ถ๋ ์์น๋ ์์ ์ค์ฝํ ๊ฒฐ์ ์ ์ด๋ ํ ์ํฅ๋ ์ฃผ์ง ์๋๋ค. ์ฆ, ํจ์์ ์์ ์ค์ฝํ๋ ์ธ์ ๋ ์์ ์ด ์ ์๋ ์ค์ฝํ๋ค.