π μ€μ½ν
var
μ ν¨μ μ€μ½ν, let
κ³Ό const
λ λΈλ‘ μ½μνΈλ₯Ό κ°λλ€.
π νΈμ΄μ€ν
var
μ ν¨μ μ€μ½νμ μ΅μλ¨μΌλ‘ νΈμ΄μ€ν
λκ³ μ μΈκ³Ό λμμ undefined
λ‘ μ΄κΈ°νλλ€.
function run() {
console.log(foo); // undefined
var foo = "Foo";
console.log(foo); // Foo
}
run();
let
κ³Ό const
λ λΈλ‘ μ€μ½νμ μ΅μλ¨μΌλ‘ νΈμ΄μ€ν
λκ³ μ μΈνλ©΄ κ°μ΄ ν λΉλκΈ° μ κΉμ§ μ΄λ€ κ°μΌλ‘λ μ΄κΈ°νλμ§ μλλ€.
function checkHoisting() {
console.log(foo); // ReferenceError
let foo = "Foo";
console.log(foo); // Foo
}
checkHoisting();
π μ¬μ μΈ
var
μ μ¬μ μΈμ΄ κ°λ₯νλ€.
let
κ³Ό const
λ μ¬μ μΈμ΄ λΈκ°λ₯νλ€.
var foo = "foo1";
var foo = "foo2"; // λ¬Έμ μμ
let bar = "bar1";
let bar = "bar2"; // SyntaxError: Identifier 'bar' has already been declared
π let, var VS const
var
μ let
μ μ¬ν λΉμ΄ κ°λ₯νλ€.
const
λ μ μΈκ³Ό μ΄κΈ°νκ° λ°λμ λμμ μΌμ΄λμΌ νλ©° μ¬ν λΉμ΄ λΆκ°λ₯νλ€. μ¦, μμμ κ°μ κ³ μ κ°μ μ μΈν λ μ¬μ©νλ ν€μλμ΄λ€.
μΆμ²
var vs let vs const