๐ฃ ๋ณ์์ ์๊ฐ ์ฌํ! Temporal Dead Zone!
์ค๋์ TDZ์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค. Temporal Dead Zone, TDZ! ๋ ๋ฌด์์ด๋!?
https://kr.pinterest.com/pin/252272016599000508/
๐ฃ TDZ ๋?
1. ๊ฐ๋
TDZ(Temporal Dead Zone)๋ ๋ณ์๊ฐ ์ ์ธ๋ ์์น๋ถํฐ ์ด๊ธฐํ๋ ๋๊น์ง์ ์์ญ์ ๋งํ๋ค. let๊ณผ const ๋ณ์๋ ์ ์ธ๋์์ง๋ง ์์ง ์ด๊ธฐํ๋์ง ์์ ์ํ์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด TDZ์ ํด๋นํ๋ฉฐ ์๋ฌ๊ฐ ๋ฐ์! ์ดํ ๋ณ์๊ฐ ์ด๊ธฐํ๋๋ฉด TDZ๋ฅผ ๋ฒ์ด๋ ์ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค!
์ฝ๊ฒ ๋งํ๋ฉด, ๋ณ์๊ฐ ์์ฑ(=๋ณ์์ ์ธ)๋๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฒ์ ๊ฐ์ด ์ ์ฅ(=์ด๊ธฐํ) ๋ ๋๊น์ง์ ์์ญ์ผ๋ก
๋ฉ๋ชจ๋ฆฌ์ ์ด๊ธฐ ๊ฐ์ด ์๋ ์ํ์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ!
ES6์ let๊ณผ const๋ ๋ณ์๋ฅผ ๋ธ๋ก์ ์๋จ์ผ๋ก *ํธ์ด์คํ
ํ์ง๋ง ์ด๊ธฐํํ์ง๋ ์์! ๋ณ์๊ฐ ์ ์ธ๋๊ธฐ ์ ์ ๋ธ๋ก ์์์ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ด ์์น๋ฅผ ์๊ฐ์ ์ฌ๊ฐ์ง๋(Temporal Dead Zone, TDZ)๋ผ๊ณ ํํํ๋ค. (ReferenceError ๋ฐ์)
* ์ฐธ๊ณ ๋ก var ์ ์ธ์ ๊ฒฝ์ฐ undefined๋ก ์ด๊ธฐํ ๋๊ธฐ ๋๋ฌธ์ TDZ๊ฐ ์๋ค.
ํธ์ด์คํ
์ ์ปดํ์ผ ๋จ๊ณ ์ค์ ๋ณ์ ๋ฐ ํจ์ ์ ์ธ์ด ํฌํจ ๋ฒ์์ ๋งจ ์๋ก ์ด๋๋๋ ๋์
์ฐธ๊ณ ๋ก
๋ณ์์ let, const์ ๋ํ ๊ฐ๋
/ ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ์ ๋ํ ๊ฐ๋
์
์๋ ๊ฒ์๋ฌผ ์ฐธ๊ณ ~!
[JavaScript] ๋ณ์์ ์ ์ธ, ์ด๊ธฐํ, ํ ๋น
๐ฃ 0. ๋ณ์์ ์ ์ธ, ์ด๊ธฐํ ํ ๋น?ใ
?์ค๋์ ๋ณ์์ ์ ์ธ, ์ด๊ธฐํ, ํ ๋น์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค! ๋ฉด์ ์ง๋ฌธ์ผ๋ก ๋์ค๋ ๊ฐ๋
์ค ํ๋! ์๋์์ ์ฒ์ฒํ ํ๋์ฉ ์ดํด๋ณด์! ๐ฃ 1. ๋ณ์ ์ ์ธ๐ค
haileyham.tistory.com
[JavaScript] var, let, const ์ฐจ์ด์
๐ฃ var · let · const ์ ๋ํด์ ์ดํด๋ณด์!Javascript ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ var let const ! ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๊ฐ๋
์ค์ ๋นผ ๋์ ์ ์๋ ๊ฒ์ ๋ํด์ ๋ค๋ค๋ณด๊ธฐ๋ก ํ์! ๐ฃ var 1. ๊ฐ๋
๋ฐ ํน์ง
haileyham.tistory.com
2. ์ฝ๋
[myLet๊ณผ myConst์ ์ ๊ทผ] ์ด๊ธฐํ ์
- TDZ๋ฅผ ๋ณด์ฌ์ฃผ๋ ReferenceError๊ฐ ๋ฐ์
[myLet๊ณผ myConst์ ์ ๊ทผ] ์ด๊ธฐํ ์ดํ
- ์ ์์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
[var์ ๊ฒฝ์ฐ]
- var๋ ํธ์ด์คํ
๋๊ณ undefined๋ก ์ด๊ธฐํ๋๋ฏ๋ก TDZ๊ฐ ์์!
- ์ ์ธํ๊ธฐ ์ ์ myVar์ ์ก์ธ์คํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋์ undefined์ด ์ถ๋ ฅ
// Temporal Dead Zone (TDZ) example
// ReferenceError ๋ฐ์: TDZ ๋ด์์ ์ ๊ทผ ์๋
try {
console.log(myLet); // ReferenceError: Cannot access 'myLet' before initialization
} catch (e) {
console.log(e.message);
}
let myLet = 'This is let';
// TDZ ์ดํ ์ ์ ์ ๊ทผ
console.log(myLet); // 'This is let'
// ReferenceError ๋ฐ์: TDZ ๋ด์์ ์ ๊ทผ ์๋
try {
console.log(myConst); // ReferenceError: Cannot access 'myConst' before initialization
} catch (e) {
console.log(e.message);
}
const myConst = 'This is const';
// TDZ ์ดํ ์ ์ ์ ๊ทผ
console.log(myConst); // 'This is const'
// var ๋ณ์๋ TDZ๊ฐ ์์
console.log(myVar); // undefined
var myVar = 'This is var';
console.log(myVar); // 'This is var'
๐ฃ TDZ ์์ฝ
TDZ๋ 'let' ๋๋ 'const' ๋ณ์ ์ ์ธ๊ณผ ์ด๊ธฐํ ์ฌ์ด์ ์์ญ
TDZ์ ๋ณ์์ ์ ๊ทผํ๋ฉด 'ReferenceError'๊ฐ ๋ฐ์
let๊ณผ const์๋ TDZ๊ฐ ์์ง๋ง var์๋ ์์
์ด๋ํ๋ฒ๋ค์์ค๋ช
ํด๋ณด์๊ถ!