ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

ํ˜ธ์ด์ŠคํŒ…(Hoisting)์ด๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„(Interpreter)์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „,

๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค์˜ ์„ ์–ธ๋ฌธ์„ ์œ„๋กœ ๋Œ์–ด ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋ถ„๋ฆฌํ•œ ํ›„, ์„ ์–ธ๋งŒ ์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

 

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

ํ•จ์ˆ˜์˜ ํ˜ธ์ด์ŠคํŒ…์€ ํ•จ์ˆ˜์˜ ์„ ์–ธ๋ฌธ ์ „์— ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
๋”ฐ๋ผ์„œ ํ•จ์ˆ˜์˜ ์„ ์–ธ๋ฌธ์€ ์„ ์–ธ ์ด์ „์—๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
print();

function print() {
  console.log('Good Morning๐ŸŒค๏ธ');
}

 

 

๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ํ˜ธ์ด์ŠคํŒ…

 

๋ณ€์ˆ˜(let, const)์™€ ํด๋ž˜์Šค๋Š” ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ…์ด ๋˜๊ณ , ์ดˆ๊ธฐํ™”๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ดˆ๊ธฐํ™” ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด ์ปดํŒŒ์ผ(๋นŒ๋“œ) ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

error "Cannot access (๋ณ€์ˆ˜๋ช… ๋˜๋Š” ํด๋ž˜์Šค๋ช…) before initialization" = '์•„์ง ๋ณ€์ˆ˜(๋˜๋Š” ํด๋ž˜์Šค)๊ฐ€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•˜์–ด'

console.log(hi); // ์—๋Ÿฌ ๋ฐœ์ƒ
let hi = 'hi';
const car = new Car(); // ์—๋Ÿฌ ๋ฐœ์ƒ
class Car {}
 

์•„๋ž˜ ์ฝ”๋“œ๋„ ์—ญ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋ธ”๋ก ์•ˆ์—์„œ x๊ฐ€ ํ˜ธ์ด์ŠคํŒ… ๋˜์–ด ์กด์žฌํ•˜๊ธด ํ•˜์ง€๋งŒ, 

๋ธ”๋ก ์•ˆ์— ์žˆ๋Š” ๊ทธ x๊ฐ€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ 'Cannot access 'x' before initializion' ์—๋Ÿฌํ•œ๋‹ค.

let x = 1;
{
  console.log(x); // ์—๋Ÿฌ ๋ฐœ์ƒ
  let x = 2;
}
728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
๊ธ€ ๋ณด๊ด€ํ•จ
250x250