λͺ¨λ μ μΈ
μ νΈμ΄μ€ν
ν©λλ€.μ μΈ λ¨κ³ : λ³μλ₯Ό κ°μ²΄μ λ±λ‘
μ΄κΈ°ν λ¨κ³ : λ³μ κ°μ²΄μ λ±λ‘λ λ³μλ₯Ό μν 곡κ°μ λ©λͺ¨λ¦¬μ ν보. μ΄λ λ³μλ undefined
λ‘ μ΄κΈ°ν
ν λΉ λ¨κ³ : undefined
λ‘ μ΄κΈ°νλ λ³μμ μ€μ κ°μ ν λΉ.
ν΄λΉ λΆλΆμμ varμ es6μμ λμ
λ let,constμμ μ°¨μ΄μ μ΄ μκΈ΄λ€.
varλ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° νλ²μ μ΄λ€μ§λ€.
console.log(a) // undefined
var a = 12;
console.log(a) // 12
νμ§λ§ constμ letμ κ²½μ° μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λΆλ¦¬λμ΄ μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ,
μ€μ½νμ λ³μλ₯Ό λ±λ‘(μ μΈ λ¨κ³)νμ§λ§ μ΄κΈ°ν λ¨κ³λ λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€ν λκΈ° λλ¬Έμ
μ΄κΈ°ν μ΄μ μ λ³μμ μ κ·Όνλ©΄ μ°Έμ‘° μλ¬(ReferenceError)κ° λ°μνλ€.
β κ·Έλ λ€λ©΄ μ΄λ€ μ΄μ λ‘ es6μ μΆκ°λ const,letμ μ μΈ, μ΄κΈ°ν λ¨κ³λ₯Ό ꡬλΆνμκΉ?
varλ μ€λ³΅ μ μΈμ΄ κ°λ₯νκΈ° λλ¬Έμ΄λ€. ν΄λΉ λΆλΆμ΄ μ λ¬Έμ κ° λλμ§λ μ½λλ₯Ό λ΄λ³΄λλ‘ νμ
var PersonName = 'κΉμ무κ°';
console.log(`κ·Έμ μ΄λ¦μ ${PersonName}μ
λλ€.`); //κΉμ무κ°
var PersonName = 'κΉμ§μ§μ§μ§';
console.log(`κ·Έμ μ΄λ¦μ ${PersonName}μ
λλ€.`); //κΉμ§μ§μ§μ§
μμ κ°μ΄ 짧μ μ½λλ§ λ³΄λλΌλ λ΄κ° "κΉμ무κ°"μ λν μ 보λ₯Ό κ°μ§ λ³μλ₯Ό μ¬μ©νκ³ μΆμ΄λ μ€λ³΅λ λ³μλͺ
μΌλ‘ "κΉμ§μ§μ§μ§"κ° λ€μ μ μΈλμκΈ° λλ¬Έμ "κΉμ무κ°"μ λν μ 보λ₯Ό λ€μ κ°μ Έμ¬ μ μκ²λλ€. λ§μ½ μμμμ μλ°±μ€μ΄ λλ μ½λμμ ν΄λΉ λ¬Έμ κ° λ°μνλ©΄ ν΄κ²°νκΈ° μν΄ κ½€λ μ€λ μκ°μ΄ 걸릴 μ μλ€.
νμ§λ§ let,constλ₯Ό μ¬μ©νλ©΄ κ°μ λ³μλͺ
μ μ€λ³΅ν΄μ μ¬μ©ν μ μκΈ° λλ¬Έμ ν΄λΉ λ³μ μ μΈμ κΆμ₯νλ κ²μ΄λ€.
μλ³μκ° μ°Έμ‘°ν μ μλ μ ν¨ λ²μ
λ₯Ό λ»νλ€.λ³μλ₯Ό μ°Έμ‘°ν λ JSμμ§μ μμ μ μ€μ½νμ λ³μκ° μμΌλ©΄ μμ μ€μ½ν λ°©ν₯μΌλ‘ μ΄λνλ©° μ μΈλ λ³μλ₯Ό κ²μνλ€. μ΄λ₯Ό μ€μ½ν 체μΈ
μ΄λΌκ³ νλ€.
μλ₯Ό λ€μ΄λ³΄μ
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // ?
bar(); // ?
ν΄λΉ μ½λλ₯Ό 보μμ λ JSκ° λμ μ€μ½νλ₯Ό λ°λ₯΄λμ§ λ μ컬 μ€μ½νλ₯Ό λ°λ₯΄λμ§ μ λͺ¨λ₯Έλ€λ©΄ κ²°κ³Ό κ°μ λμ μ€μ½νλ₯Ό λ°λ₯΄λ 10, 1λ‘ μμνμ κ²μ΄λ€. νμ§λ§ JSλ λ μ컬 μ€μ½νλ₯Ό λ°λ₯΄κΈ° λλ¬Έμ κ²°κ³Ό κ°μ 1,1μ΄ λμ¨λ€. μ΄λ λ μ컬 μ€μ½νλ 무μμΌκΉ?
λ μ컬 μ€μ½νλ μ μ μ€μ½νλ‘ μμ μ€μ½νκ° λμ μΌλ‘ λ³νμ§ μκ³ ν¨μ μ μκ° νκ° λλ μμ μ μμ μ€μ½νκ° μ μ μΌλ‘ κ²°μ λλ€. μ¦, JSμ μμ μ€μ½νλ μ΄λμ νΈμΆνλμ§κ° μλ μ΄λμ μ μ
νλμ§μ λ°λΌ κ²°μ λλ€. μ¦ barλ μ μ μ€μ½νλ₯Ό κΈ°μ΅νκ³ μλ€κ° xλ₯Ό μ μμμ μ°Ύκ² λκΈ° λλ¬Έμ κ²°κ³Ό κ°μ΄ 1,1μ΄ λλ€.