๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉ ์šฉ์–ด

ํ˜ธ์ด์ŠคํŒ…(hoisting) ์ด๋ž€?, var์™€ let์˜ ์ฐจ์ด

728x90

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

: ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰์ด ๋˜๊ธฐ์ „์— '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„'์ด ์„ ์–ธ๋œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๊ฐ€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ์–ต์„ ํ•ด๋‘ก๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ•จ์ˆ˜ ์ •์˜๋ฌธ๋ณด๋‹จ ํ˜ธ์ถœ๋ฌธ์ด ๋จผ์ € ๋‚˜์™€๋„ ํ•จ์ˆ˜ ์ •์˜๋ฌธ์„ ๋Œ์–ด์˜ฌ๋ ค ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ํ•จ์ˆ˜ ์ •์˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ํ˜ธ์ด์ŠคํŒ…(hoisting) ๊ธฐ์ˆ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 

๊ทธ๋Ÿฌ๋‚˜ ์ต๋ช… ํ•จ์ˆ˜ ์„ ์–ธ ์ฐธ์กฐ ๋ฐฉ์‹์€ ํ˜ธ์ด์ŠคํŒ…์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 

๋˜ํ•œ ์˜ค์ง '์„ ์–ธ'๋งŒ์ด ํ˜ธ์ด์ŠคํŒ… ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. 

1. ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•˜๊ณ 

2. ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”(๊ธฐ๋ณธ๊ฐ’-undefined)

โ–ถ์ดˆ๊ธฐํ™”๋ฅผ ์ œ์™ธํ•œ ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ…ํ•จ.

 

('undefined' : ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋“ฑ๋ก(์ดˆ๊ธฐํ™”)๋˜๊ธฐ์ „์˜ ๊ธฐ๋ณธ๊ฐ’)์ด๋‹ค.

 

 

let, const๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋„ ํ˜ธ์ด์ŠคํŒ… ๋Œ€์ƒ์ด์ง€๋งŒ

var์™€ ๋‹ฌ๋ฆฌ ํ˜ธ์ด์ŠคํŒ… ์‹œ 'undefined'์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ

์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

โ–ถ'let'์€ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์ด์ „ ์‚ฌ์šฉ(ํ˜ธ์ถœ)์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

โ€ป TDZ (Temperal Dead Zone) : ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ์ „๊นŒ์ง€์˜ Zone์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ( ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ )

 

var์™€ let์˜ ์ฐจ์ด



var๋Š” ํ•จ์ˆ˜(function)๋งŒ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ํ˜ธ์ด์ŠคํŒ…๋˜๊ณ  
๋‚˜๋จธ์ง€(for, if)๋Š” ๋‹ค ์ „์—ญ๋ณ€์ˆ˜๋กœ ์˜ฌ๋ ค๋ฒ„๋ฆผ

โ˜… var์˜ ๊ฒฝ์šฐ ์„ ์–ธ ์ „์— ์ ‘๊ทผํ•  ์‹œ undefined / let, const๋Š” 'ReferenceError' ๋ฐœ์ƒ 

728x90