
μλ°μ€ν¬λ¦½νΈμμ νΈμ΄μ€ν μ μ½λ μ€ν μ μ λ³μμ ν¨μ μ μΈμ λ©λͺ¨λ¦¬μ λ±λ‘νμ¬,
μ½λ μ΄λμμλ μ°Έμ‘°ν μ μκ² νλ κ³Όμ μ λλ€.
μ¬μ μ μ μ : λμ΄μ¬λ¦¬κΈ°
μ°μ , νΈμ΄μ€ν μ λν΄ λ μμΈν μ€λͺ νκΈ° μ μ λ¨Όμ μλ°μ€ν¬λ¦½νΈμμμ λ³μ μ²λ¦¬ κ³Όμ μ λν΄ μμ보λλ‘ νκ² μ΅λλ€.
| μ²λ¦¬ λ¨κ³ | var | let | const |
|---|---|---|---|
| μ μΈ | λ³μ μ μΈκ³Ό λμμ undefinedλ‘ μ΄κΈ°νλ¨ | λ³μκ° μμ±λκ³ λ±λ‘λ¨ | μ μΈκ³Ό λμμ μ΄κΈ°ν λ° κ° ν λΉ |
| μ΄κΈ°ν | - | undefinedλ‘ μ΄κΈ°νλ¨ | - |
| ν λΉ | undefinedλ‘ μ΄κΈ°νλ λ³μμ μ€μ κ° ν λΉ | μ΄κΈ°νλ λ³μμ μ€μ κ° ν λΉ | μ¦μ κ°μ ν λΉν΄μΌ ν¨ |
μ½λ μ€ν μ λ³μμ ν¨μλ₯Ό λ©λͺ¨λ¦¬μ μ μ₯νκΈ° λλ¬Έμ λ³μλ ν¨μ μ μΈμ΄ μ½λ λ΄ μ΄λμ μλλΌλ, μ€μ μ€ν μ μ λ©λͺ¨λ¦¬μ ν λΉλμ΄ μ¬μ©μκ° μ무 λ¬Έμ μμ΄ ν΄λΉ λ³μλ ν¨μλ₯Ό μ¬μ©ν μ μκ² λ©λλ€.
μ€μ λ‘ νΈμ΄μ€ν
μ μλ°μ€ν¬λ¦½νΈμμ κ·λ²μ μΌλ‘ μ μλ μ©μ΄κ° μλλλ€.
μ μ€λͺ
κ³Ό κ°μ΄ λμ΄μ¬λ €μ§λ νμμ μμ΄λ‘ "hoisting"μ΄λΌ νμ¬
λ§μ μ¬λλ€μ΄ νΈμ΄μ€ν
μ΄λΌλ λͺ
μΉμ μ¬μ©νκ² λμμ΅λλ€.
console.log(test); //undefined
var test = 123;
console.log(test); //123
λ³μ testκ° μ μΈλκΈ° μ μ μ°Έμ‘° μ μλ¬κ° λ°μνμ§ μκ³ undefinedκ° μΆλ ₯λ©λλ€.
μ΄λ μ½λ μ€ν μ μ μλ°μ€ν¬λ¦½νΈ λ΄λΆμμ 미리
testλ³μλ₯Ό μ μΈνμ¬ undefinedλ‘ μ΄κΈ°νλ₯Ό ν΄λμκΈ° λλ¬Έμ
λλ€.
λ°λΌμ var ν€μλ λ³μλ νΈμ΄μ€ν κ³Όμ μμ μ μΈ λ° μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλ¨μ μ μ μμ΅λλ€.
console.log(test); // ReferenceError: test is not defined
let test = 123;
console.log(test); // 123
κ°μ μν©μμ letκ³Ό constμ κ²½μ° errorλ₯Ό λ°μμν€λλ° λ°λ‘ TDZ(Temporal Dead Zone) λλ¬Έμ λλ€.
TDZλ μ€μ½ν μμ μ§μ μμ μ΄κΈ°ν μμ μ§μ κΉμ§μ μμμ μλ―Ένλ©°,
μ΄ μμμ μλ λ³μλ€μ μ¬μ©ν μ μμ΅λλ€.
letκ³Ό constλ TDZμ μν₯μ λ°κΈ° λλ¬Έμ ν λΉμ νκΈ° μ μλ μ¬μ©μ΄ λΆκ°ν©λλ€.
μ¦, letμ κ²½μ° μ μΈ λ¨κ³κΉμ§λ μλ£λμμ§λ§ μ΄κΈ°νκ° λμ§ μμ μλ¬κ° λ°μνλ κ²μ
λλ€.
μ΄λ μ μ¬μ μΈ λ²κ·Έλ₯Ό μ€μΌ μ μλ€λ μ₯μ μ΄ μμ΅λλ€.
test(); //test
function test() {
console.log("test");
}
ν¨μ νΈμΆμ΄ ν¨μμ μΈλ¬Έμ μμ μλ μλμͺ½μ μλ
ν¨μ μ μΈλ¬Έμ νΈμ΄μ€ν
μν₯μΌλ‘ λμ΄μ¬λ €μ§κΈ° λλ¬Έμ μλ¬κ° λ°μνμ§ μμ΅λλ€.
test(); // TypeError: test is not a function
var test = function () {
console.log("test");
};
test(); // test
ν¨μ ννμμ κ²½μ°, λ³μ μ μΈ(var test)μ νΈμ΄μ€ν
λμ§λ§,
ν¨μμ μ΄κΈ°νμ ν λΉμ νΈμ΄μ€ν
λμ§ μμ΅λλ€.
λ°λΌμ testλ₯Ό νΈμΆνκΈ° μ μ testλ undefinedλ‘ μ΄κΈ°νλλ©°,
μ΄ μνμμ νΈμΆνλ©΄ TypeErrorκ° λ°μν©λλ€.
μ΄ν testμ ν¨μκ° ν λΉλ νμ νΈμΆνλ©΄ μ μμ μΌλ‘ "test"κ° μΆλ ₯λ©λλ€.