๐ ์ด๊ธฐํ: undefined๋ฅผ ํ ๋นํด์ฃผ๋ ๋จ๊ณ
๐ ๋ณ์: ๊ฐ์ ๋ด๊ธฐ ์ํ ๊ณต๊ฐ
console.log(b) // undefined
var b = 'bee'
var์์ ์์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ๋์์ด ์ด๋ฃจ์ด์ง๋ค. (3)์ด (1)๋ก ์ค์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์๋์ง๋ง ๊ทธ์ ๊ฐ์ด ๋์ด์ฌ๋ ค์ง ๊ฒ ์ฒ๋ผ ๋์ํ๋ค. (ํธ์ด์คํ )
var bug; // (1)
console.log(bug) // undefined (2)
bug = 'bee'//(3)
์ฝ์์ ์ฐ์์ ๋ 'undefined'๊ฐ ๋๋ ์ด์ ๋ ์ ์ธ์ ํธ์ด์คํ ๋์ง๋ง ํ ๋น์ ํธ์ด์คํ ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
var name = 'Mary'
console.log(name) // Mary
var name = 'William'
console.log(name) // William
console.log(bug) // ERROR!!
// Uncaught ReferenceError: bug is not defined
let bug = 'bee'
TDZ(Temporal Dead Zone): ์ผ์์ ์ฌ๊ฐ์ง๋. TDZ ์์ ์๋ ๋ณ์๋ค์ ์ฌ์ฉํ ์ ์๋ค. let๊ณผ const๋ TDZ์ ์ํฅ์ ๋ฐ๊ธฐ์ ํ ๋น ์ ์ ์ฌ์ฉํ ์ ์๋ค.
์์1
console.log(bug) // TEMPORAL DEAD ZONE!!! ์ฌ์ฉ๋ถ๊ฐ
let bug = 'bee'// ํจ์์ ์ ์ธ, ํ ๋น
console.log(bug) // ์ฌ์ฉ๊ฐ๋ฅ
์์2
let dessert = 'cheeseCake';
function displayDessert() {
console.log(dessert) // TEMPORAL DEAD ZONE
let dessert = 'chocolateCake'
}
displayDessert() // ERROR!!
// Cannot access 'dessert' before initialization
let name = 'Mary'
console.log(name) // Mary
let name = 'William' // ERROR!!
// Uncaught SyntaxError: Identifier name has already been declared.
console.log(name)