let, const

var

  • hoisting 가능
  • 변수 중복 선언 가능
  • 재할당 가능
  • function-scoped
console.log(x); // undefined
var x = 10;
var x = 20;
{
    console.log(x); //20
    x = 30;
}
console.log(x); //30

let

  • hoisting 불가능
  • 변수 중복 선언 불가능
  • 재할당 가능
  • block-scoped
console.log(x); // error: z is not defined
let x = 10;
let x = 20; // error
{
    console.log(x); // error: z is not defined
    let x = 20;
    console.log(x); // 20
}
console.log(x); // 10

const

  • hoisting 불가능
  • 변수 중복 선언 불가능
  • 재할당 불가능
  • block-scoped
console.log(x); // error: x is not defined
const x = 10;
const x = 20; // error
{
    console.log(x); // 10
    x = 20; // error
}
x = 20; //error

왜 let, const를 써야할까?

  • 변수 재선언 문제 방지
  • hoisting 문제 방지
* 예제 코드들은 에러 발생 후 진행되지 않지만 한번에 작성하기위해서 위처럼 작성했습니다.