15μ₯ let,const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν
15.1 var ν€μλλ‘ μ μΈν λ³μμ λ¬Έμ μ
-λ³μ μ€λ³΅ μ μΈ νμ©
var ν€μλλ‘ μ μΈν λ³μλ μ€λ³΅ μ μΈμ΄ κ°λ₯νλ€.
μ΄κΈ°νλ¬Έμ΄ μλ λ³μ μ μΈλ¬Έμ 무μλλ€. μλ¬λ λ°μνμ§ μλλ€.
var x = 1
var y = 1;
var x = 100;
var y;//μ΄κΈ°νλ¬Έμ΄ μλ λ³μ μ μΈλ¬Έμ 무μλλ€.
console.log(x);//100
console.log(y);//1
-ν¨μ λ 벨 μ€μ½ν
var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
κ·Έλμ ifλ¬Έμ΄λ forλ¬Έμμ μ μΈν λ³μλ μ μ λ³μκ° λλ€.
- λ³μ νΈμ΄μ€ν
var ν€μλλ‘ λ³μλ₯Ό μ μΈνλ©΄ λ³μ μ μΈλ¬Έμ΄ μ€μ½νμ μ λλ‘
λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ€. κ·Έλμ μ μΈλ¬Έ μ΄μ μ μ°Έμ‘°νλ©΄ undefinedλ₯Ό λ°ννλ€.
15.2 let ν€μλ
-λ³μ μ€λ³΅ μ μΈ κΈμ§
letμΌλ‘ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ λ¬Έλ² μλ¬κ° λ°μνλ€.
let a = 100;
let a = 200;//SyntaxError: Identifier 'a' has already been declared.
-λΈλ‘ λ 벨 μ€μ½ν
letμΌλ‘ μ μΈν λ³μλ λͺ¨λ μ½λ λΈλ‘μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
let foo = 1;
{
let foor = 2;
let bar = 3;
}
console.log(foo); //1
console.log(bar);
μ μμμ μ μΈλ fooμ μ½λ λΈλ‘ λ΄μ fooλ λ€λ₯Έ λ³κ°μ λ³μλ€.
ν¨μ λ΄μ μ½λ λΈλ‘μ ν¨μ λ 벨 μ€μ½νμ μ€μ²©λλ€.
- λ³μ νΈμ΄μ€ν
let ν€μλλ‘ μ μΈν λ³μλ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
console.log(foo);//ReferenceError: foo is not defined
let foo;
let ν€μλλ‘ μ μΈν λ³μλ μ μΈκ³Ό μ΄κΈ°νκ° λΆλ¦¬λμ΄ μ§νλλ€.
λ°νμ μ΄μ μ μ μΈλ¨κ³κ° μ€νλμ§λ§ μ΄κΈ°νλ λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€νλλ€.
console.log(foo);//ReferenceError: foo is not defined
let foo;
console.log(foo)//undefined
μ€μ½νμ μμ μ§μ λΆν° μ΄κΈ°ν λ¨κ³ μμ μ§μ κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
μ΄ κ΅¬κ°μ μΌμμ μ¬κ°μ§λ (TDZ)λΌκ³ λΆλ₯Έλ€.
15.3 const ν€μλ
const ν€μλλ μμλ₯Ό μ μΈνκΈ° μν΄ μ¬μ©νλ€.
- μ μΈκ³Ό μ΄κΈ°ν
const ν€μλλ‘ μ μΈν λ³μλ λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°μ§λ©°, λ³μ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
-μ¬ν λΉ κΈμ§
constλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ κΈμ§λλ€.
const foo = 1;
foo = 2;//TypeError: Assignment to constant variable.
- const ν€μλμ κ°μ²΄
const ν€μλλ‘ μ μΈλ λ³μμ κ°μ²΄λ₯Ό ν λΉν κ²½μ° κ°μ λ³κ²½ν μ μλ€.
λ³κ²½ λΆκ°λ₯ν μμ κ°μ μ¬ν λΉ μμ΄ λ³κ²½ν μ μμ§λ§ κ°μ²΄λ μ¬ν λΉ μμ΄λ μ§μ λ³κ²½μ΄ κ°λ₯νκΈ° λλ¬Έμ΄λ€.
const person = {
name : 'Lee'
};
person.name = 'Kim';
console.log(person);//{ name: 'Kim' }
μΌλ¨ const ν€μλλ₯Ό μ¬μ©νμ!