๋ณ์ ๋ฐ ํจ์ ์ ์ธ์ ์ ํจ ๋ฒ์(scope)์ ๋งจ ์๋ก
์ด๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ JS์ ๊ธฐ๋ณธ(default) ๋์
๊ฐ๋
- JS์ ๋ชจ๋ ์ ์ธ์ ํธ์ด์คํ ์ด ๋ฐ์ํ๋ค = ๋ชจ๋ ์ ์ธ์ด ์ฝ๋ ์คํ ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ธ๋ฌธ๋ณด๋ค ์ฐธ์กฐ๋ ํธ์ถ์ด ๋จผ์ ๋์๋ ์ค๋ฅ ์์ด ์คํ๋๋ค.
- let, const, class๊ฐ ํธ์ด์คํ ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ด์ ๋ ์ผ์์ ์ฌ๊ฐ์ง๋(TDZ)์ ๋ค์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ณ์ ํธ์ด์คํ (Variable Hoisting)
๋ณ์ ํธ์ด์คํ ์ ์ ์ธ ๋ฐฉ์์ ๋ฐ๋ผ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋๋ค.
1. var
๋ก ์ ์ธ: ๊ฐ์ด undefined๋ก ์ด๊ธฐํ๋๋ค.
console.log(color); // undefined
var color = yellow;
console.log(color); // "yellow"
์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ํด์๋๋ค.
var color;
console.log(color); // undefined
color = yellow;
console.log(color); // "yellow"
2. let
๋๋ const
๋ก ์ ์ธ: ๊ฐ์ด ์ด๊ธฐํ๋์ง ์๋๋ค
console.log(color); // ReferenceError
let color = yellow;
console.log(color); // "yellow"
์ด ๊ฒฝ์ฐ color
๊ฐ ์ด๊ธฐํ๋์ง ์์ ์ํ์์ ์ฐธ์กฐํด์ ์ฐธ์กฐ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
ํจ์ ํธ์ด์คํ (Function Hoisting)
greet(); // "Hello, JS!"
function greet() {
console.log("Hello, JS!");
}
์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ํด์๋๋ค.
function greet() {
console.log("Hello, JS!");
}
greet(); // "Hello, JS!"
ํจ์์ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ด ํจ์ ํํ์์ผ๋ก ์์ฑํ๋ฉด ํธ์ด์คํ ์ด ๋ฐ์ํ์ง ์๋๋ค.
func1(); // "Hello"
func2(); // ReferenceError
function func1() {
console.log("Hello");
}
const func2 = () => console.log("JS");
๐ TDZ(Temporal Dead Zone)
ํด๋น ๋ฒ์(scope)์ ๋งจ ์์์ ์ด๊ธฐํ ์๋ฃ ์์ ์ฌ์ด์ ๋ฐ์ํ๋ ์ฌ๊ฐ์ง๋์ด๋ค.
{
// customer์ TDZ ์์ (์ค์ฝํ ๋งจ ์)
const func = () => console.log(customer); // OK
// TDZ ๋ด๋ถ
console.log(customer); // ReferenceError
let customer = "thief"; // TDZ ์ข
๋ฃ
func(); // TDZ ๋ฐ์์ ํธ์ถ -> ์ ์ ๋์
}
์ด๋ ์ฝ๋์ ์์ฑ ์์(์์น)๊ฐ ์๋๋ผ ์ฝ๋์ ์คํ ์์(์๊ฐ)์ ์ํด ํ์ฑ๋๋ค.
Reference
'๐ฅ Develop > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด ์ ๋ ฌํ๊ธฐ (0) | 2024.07.29 |
---|---|
[Javascript] Object.entries() ๋ฉ์๋ (0) | 2024.07.27 |
[Javascript] ์คํ๋ ๋(Spread) ์ฐ์ฐ์ (0) | 2024.07.26 |
[Javascript] ๋ฐ์ดํฐ ํ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ฐฉ์ (1) | 2024.07.24 |
[Javascript] ํด๋ก์ (Closure) (3) | 2024.07.20 |