scope
๋ณ์์ '์๋ช '
- local scope
- global scope
1. local scope
์ง์ญ๋ณ์(Local Variable)๊ฐ ๊ฐ์ง๋ ๋ฒ์๋ก, ํจ์๊ฐ ์คํ๋๋ฉด ๋ง๋ค์ด์ง๊ณ ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ฉธํ๋ค. ํจ์ ์ธ๋ถ์์๋ ์ ๊ทผํ ์ ์๋ค.
2. global scope
์ ์ญ๋ณ์(Global Variable)๊ฐ ๊ฐ์ง๋ ๋ฒ์๋ก ๋ณ์๊ฐ ํจ์ ์ธ๋ถ์์ ์ ์ธ๋์ด ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ์ ๊ทผํ ์ ์๋ค.
let globalMsg = 'global'; // global variable
function printMsg() {
let msg = 'hello';
console.log(msg); // local variable
console.log(globalMsg); // ์ ์์๋ํ๋ค.
}
printMsg();
console.log(msg); //RefenceError๊ฐ ๋ฐ์ํ๋ค.
์(local scope ๋ด๋ถ)์์๋ ๋ฐ(global scope)๋ฅผ ๋ณผ ์ ์์ง๋ง, ๋ฐ์์๋ ์์ ๋ณผ ์ ์๋ค.
hoisting
scope ๋ด๋ถ ์ด๋์๋ ๋ณ์๊ฐ ์ต์์ผ๋ก ๋์ด์ฌ๋ ค์ง ๊ฒ์ฒ๋ผ ๋์ํ๋ค.
- 'var๋ก ์ ์ธํ ๋ชจ๋ ๋ณ์'์ 'ํจ์ ์ ์ธ๋ฌธ'์ hoisting๋๋ค.
- '๋ณ์ ์ ์ธ'์ด 'ํจ์ ์ ์ธ'๋ณด๋ค, 'ํ ๋น๋์ด์๋ ๋ณ์'๊ฐ 'ํ ๋น๋์ด์์ง ์์ ๋ณ์'๋ณด๋ค ๋จผ์ ์ธ์๋๋ค.
TDZ (Temporal Dead Zone)
๋ณ์๊ฐ ์ ์ธ๋์์ง๋ง ์ด๊ธฐํ๋๊ธฐ ์ ๊น์ง ์ก์ธ์คํ ์ ์๋ ์์ญ(๋ณ์ ํ ๋น ์ ์ผ๋ก ์ฌ์ฉ์ด ๋ถ๊ฐํ ์์ญ)์ด๋ค. let ๋ฐ const ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ฐ์ํ๋ค.
console.log(myVar); // ์๋ฌ! myVar๋ TDZ์ ์์ผ๋ฏ๋ก ์ฐธ์กฐํ ์ ์์
let myVar = 42; // ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํ
console.log(myVar); // ์ด์ myVar์ ๊ฐ์ธ 42๋ฅผ ์ถ๋ ฅ
if (true) {
console.log(myVar); // ์๋ฌ! myVar๋ TDZ์ ์์ผ๋ฏ๋ก ์ฐธ์กฐํ ์ ์์
let myVar = 42; // ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํ
console.log(myVar); // ์ด์ myVar์ ๊ฐ์ธ 42๋ฅผ ์ถ๋ ฅ
}
์ถ์ฒ : ๋๋ฆผ์ฝ๋ฉ https://www.youtube.com/@dream-coding / ์ฝ๋ฉ์๋ง https://www.youtube.com/@codingangma