IT/JavaScript

2. 자바스크립트(JavaScript) 기초 문법(2)

뀨뿌뀨뿌 2021. 9. 23. 13:11

선언 키워드

var, let, const 의 차이점

  • ES5까지는 변수를 선언할 수 있는 키워드가 var 뿐이었고, ES6에서 let, const 키워드가 추가되어 이를 이용하여 변수를 선언할 수 있습니다.

  • var는 함수 레벨 스코프이고 let, const 는 블럭 레벨 스코프입니다.

  • var 로 선언한 변수는 선언 전에 사용해도 에러가 나지 않지만 let, const는 에러가 발생합니다.

    console.log(num) // undefined
    var num = 10
    • 위의 코드의 실행단계는 var num 으로 먼저 선언이 되고 console.log(num)에는 아무런 값이 없으므로 undefined 상태로 결과가 출력됩니다. 마지막으로 var num = 10 여기에서 할당이 일어나게 됩니다.
      console.log(age) // Error
      let age = 40
      console.log(age) // 40
    • 위 코드의 실행단계는 let age 으로 먼저 선언이 되면 TDZ안으로 들어 가게 됩니다.
    • 값이 할당되지 않은 상태로 TDZ에 들어간 age변수는 console.log를 사용해 출력하면 오류가 발생하게 됩니다.
    • 이러한 실행 순서는 const도 동일하게 실행됩니다.

      TDZ(T)란?
      변수에 도달 할 수 없는 상태를 의미
      TDZ에 위치하고 있는 값들은 할당전에 접근 할 수 없음

  • var, let은 제할당이 가능하고 const 는 재할당이 불가능합니다.

  • var, let 은 변수 선언시 초기 값을 주지 않아도 되지만 const 는 반드시 초기값을 할당해야 합니다.

  • var 은 이미 선언되어 있는 이름과 같은 이름으로 변수를 다시 선언해도 에러가 나지 않지만 let, const 는 이미 존재변수와 같은 이름의 변수를 선언하게 되면 오류가 발생합니다.

최근에는 const를 사용하는 것을 권장합니다.
const 는 한번 선언 후 값을 변경 할 수 없기 때문에 값의 흐름이 눈에 잘 보이고 안전하기 때문입니다.