var, let, const

JavaScript · 2021. 3. 8. 11:51

var, let, const

  • 자바스크립트는 함수 레벨 스코프를 따른다. (함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효)
  • let, const는 var의 문제점(전역 변수 남발)을 보완하기 위해 도입되었다.
  • let, const는 블록 레벨 스코프를 따른다({...}코드 블록 내에서만 유효)
  • javascript는 모든 선언을 호이스팅한다.
    호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성
  • var 키워드로 선언된 변수는 선언과 초기화가 한번에 이뤄진다. 즉 선언문 이전에 변수에 접근해도 스코프에 변수가 존재하여 undefined를 반환한다. 이를 변수 호이스팅이라 한다.
  • let 키워드는 선언단계와 초기화단계가 분리되어 진행된다.
  • const는 let과 다르게 재할당이 금지된다(상수)
  • const는 선언과 할당이 동시에 이뤄져야 한다(ex. const FOO;는 Syntax Error)
  • 상수는 가독성과 유지지보수성을 위해 적극 사용해야 한다.
  • const를 객체에 사용할 경우, 객체 자체에 재할당은 불가능하지만, 프로퍼티값은 변경할 수 있다. 따라서 객체 타입 변수 선언에는 const를 사용하는 것이 좋다.
  • 변수 선언에는 기본적으로 const를 사용하고, 재할당이 필요한 경우에만 let을 사용하는 것이 좋다(선언 시점에는 재할당이 필요한지 잘 모르는 경우가 많으므로 일단 const를 사용하고 재할당이 필요하면 그때 let을 사용하는 것이 좋다)
  • var키워드는 es6에서 가급적 사용하지 않는 것을 추천한다

출처: poiemaweb.com/es6-block-scope