๐ 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 ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
let
const
class
class์ constructor() ๋ด๋ถ์ super() (ํด๋น ํด๋์ค์ contructor ์์ super ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ ๊น์ง๋ ํด๋น ํด๋์ค์์ this ๋ฅผ ์ฐธ์กฐํ๋ฉด ์๋ฌ ๋ฐ์)
ํจ์ ๋งค๊ฐ๋ณ์ (๋งค๊ฐ๋ณ์ ์ ์ธ ์ ์ ์ฐธ์กฐํ๋ฉด ์๋ฌ ๋ฐ์)
var
function (ํจ์ ์ ์ธ์)
import (import ๊ตฌ๋ฌธ)
TDZ๋ const, let, class ๊ตฌ๋ฌธ์ ์ ํจ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ๊ฐ๋
์ด๋ค.
TDZ๋ ์ ์ธ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ฉํ์ง ์๋๋ค.
๋ฐ๋๋ก var ๋ณ์๋ ์ ์ธ ์ ์๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ var ์ฌ์ฉ์ ํผํ๋ ๊ฒ์ด ์ข๋ค.