JavaScript (6) - ํ˜ธ์ด์ŠคํŒ…(Hoisting), ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์‹คํ–‰ ์‹œ์ 

2023. 12. 4. 12:37ใ†front-end/JavaScript

728x90

๐Ÿ‘‰ ํ˜ธ์ด์ŠคํŒ… (Hoisting): ๋Œ์–ด ์˜ฌ๋ฆฌ๋‹ค. ๊ฒŒ์–‘ํ•˜๋‹ค.

ํ˜ธ์ด์ŠคํŒ…์€ ๋Œ์–ด ์˜ฌ๋ฆฐ๋‹ค๋Š” ๋œป์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
JavaScript ์—์„œ ํ˜ธ์ด์ŠคํŒ…์„ ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ?

 

์šฐ์„  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

console.log(score); // ๋ณ€์ˆ˜ ์ฐธ์กฐ
var score; // ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ

 

๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ๋ณด๋‹ค ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•ž์— ์žˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด ํ•œ ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ console.log ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค.
์ฐธ์กฐ์—๋Ÿฌ ReferenceError ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ, 

 

undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์  ๋Ÿฐํƒ€์ž„ runtime์ด ์•„๋‹ˆ๋ผ ๊ทธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋ณ€์ˆ˜ ์„ ์–ธ์€ ์†Œ์Šค์ฝ”๋“œ์˜ ์–ด๋””์— ์žˆ๋“  ์ƒ๊ด€์—†์ด ๋‹ค๋ฅธ ์ฝ”๋“œ๋ณด๋‹ค ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.

 

๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ฝ”๋“œ์˜ ์„ ๋‘๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณ ์œ ์˜ ํŠน์ง•์„ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(variable hoisting)์ด๋ผ ํ•œ๋‹ค.
์‹ค์ œ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์น˜ ๋Œ์—ฌ์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

 

 

์ถœ์ฒ˜: ์ด์›…๋ชจ, ๋ชจ๋˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive, ์œ„ํ‚ค๋ถ์Šค(2020), p42-43.

728x90