TDZ (Temporal Dead Zone)

Mintaekยท2022๋…„ 8์›” 9์ผ
0

๊ฐœ๋… ์ •๋ฆฌ

๋ชฉ๋ก ๋ณด๊ธฐ
2/10
post-thumbnail

๐Ÿ”Ž TDZ๋ž€?

TDZ

๐Ÿ‘‰ Temporal Dead Zone ์˜ ์•ฝ์ž๋กœ ์šฐ๋ฆฌ ๋ง๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€๋ผ๋Š” ์˜๋ฏธ์ด๋ฉฐ,
์Šค์ฝ”ํ”„ ์‹œ์ž‘ ~ ์ดˆ๊ธฐํ™” ์‹œ์ž‘ ์‚ฌ์ด์˜ ๊ตฌ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.๋‹ค๋ฅธ ๋ง๋กœ ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ณ  ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „๊นŒ์ง€์˜ ๊ตฌ๊ฐ„

๐Ÿ‘‰const ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด์ž. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์ƒํ•œ๋Œ€๋กœ ๋™์ž‘ํ•œ๋‹ค.

const white = '#FFFFFF';

white; // => '#FFFFFF'

์ด๋ฒˆ์—๋Š” ์„ ์–ธ ์ „์— white ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

white; // throws `ReferenceError`
const white = '#FFFFFF';

white

const white = '#FFFFFF' ๊ตฌ๋ฌธ ์ „ ์ค„๊นŒ์ง€, white ๋ณ€์ˆ˜๋Š” TDZ์— ์žˆ๋‹ค.

TDZ์— ์žˆ๋Š” white ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด , ReferenceError: Cannot access 'white' before initialization ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

TDZ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฒƒ

  1. let

  2. const

  3. class

  4. class์˜ constructor() ๋‚ด๋ถ€์˜ super() (ํ•ด๋‹น ํด๋ž˜์Šค์˜ contructor ์—์„œ super ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ this ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ)

  5. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ (๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ ์ „์— ์ฐธ์กฐํ•˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ)

TDZ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€์•Š๋Š” ๊ฒƒ

  1. var

  2. function (ํ•จ์ˆ˜ ์„ ์–ธ์‹)

  3. import (import ๊ตฌ๋ฌธ)


์ •๋ฆฌํ•˜๋ฉฐ

  • TDZ๋Š” const, let, class ๊ตฌ๋ฌธ์˜ ์œ ํšจ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.
    TDZ๋Š” ์„ ์–ธ ์ „์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋ฐ˜๋Œ€๋กœ var ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ์ „์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— var ์‚ฌ์šฉ์€ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

profile
Slow and Steady Wins the Race

0๊ฐœ์˜ ๋Œ“๊ธ€