์ค์ฝํ(Scope); ๋ณ์์ ์ ํจ๋ฒ์
let | const | var | |
---|---|---|---|
์ ํจ๋ฒ์ | ๋ธ๋ก/ํจ์ ์ค์ฝํ | ๋ธ๋ก/ํจ์ ์ค์ฝํ | ํจ์ ์ค์ฝํ |
๊ฐ ์ฌํ ๋น | ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ | ๊ฐ๋ฅ |
์ฌ์ ์ธ | ๋ถ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ | ๊ฐ๋ฅ |
** var: ๋ธ๋ก ์ค์ฝํ ๋ฌด์(ํ์ดํ ํจ์ ์ ์ธ), ๋ธ๋ก ๋ฐ๊นฅ์์๋ ๋ณ์ var์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์(๋น์ถ์ฒ)
let name = '๊น์ฝ๋ฉ';
function showName() {
name = '๋ฐํด์ปค';
console.log(name); // ๋ฐํด์ปค;
}
console.log(name); // ๊น์ฝ๋ฉ;
showName();
console.log(name); // ๋ฐํด์ปค;
ํท๊ฐ๋ฆฐ ํด์ฆ. ํจ์ showName์์ ๋ณ์ name์ ์ ์ธ์ด ์๋ค. ๋ฐ๋ผ์ line3์ ๋ณ์ name์ ์ฌํ ๋น์ผ๋ก ๋ณผ ์ ์๋ค.ํจ์๋ฅผ ์คํํ๊ธฐ ์ console.log(name);์ ์ ์ญ ์ค์ฝํ์์์ name์ ์ถ๋ ฅํ๊ณ , ํจ์ ์คํ ํ console.log(name);์ ๋ณ์ name์ ์ฌํ ๋น ๋ ๋ฐํด์ปค๋ฅผ ์ถ๋ ฅํ๋ค.
โ
ํจ์ ๋ด์์ ์ ์ธ ํค์๋ ์๋ ์ ์ธ์, ํจ์์ ์คํ ์ ๊น์ง๋ ์ ์ธ๋์ง ์์ ๊ฒ์ผ๋ก ์ทจ๊ธ
** ๋ง์ฝ ํจ์ ์์์ let name = '๋ฐํด์ปค'; ์ด๋ ๊ฒ ์ ์ธํ๋ค๋ฉด ๋ง์ง๋ง ์ฝ์๋ก๊ทธ ๋ค์์ ์ ์ญ ์ค์ฝํ์ ์๋ ์ฝ์๋ก๊ทธ๋ก, ํจ์๋ฅผ ํฌํจํ ์ง์ญ ์ค์ฝํ์ ๋ณ์๋ฅผ ๋์ด์ฌ ์ ์์ผ๋ฏ๋ก, ์ ์ญ ์ค์ฝํ์ ๋ณ์ name์ ๋ฐ์ดํฐ ๊น์ฝ๋ฉ์ ์ถ๋ ฅํ๋ค.
window ๊ฐ์ฒด(๋ธ๋ผ์ฐ์ only)