본문 바로가기
JavaScript/기초

자바스크립트[기초] var | let | const 차이점과 var 를 쓰면 안되는 이유

by 뿌비 2022. 4. 25.
728x90

var 

  • 동일한 변수로 중복 선언이 가능
  • function scope이다
  •  호이스팅시 선언과 동시에 undefined가 초기화된다.

< var를 사용하면 안 되는 이유 > 

  • block scope 가 아니기 때문에  block scope 안에 var로 선언을 해도  전역에서 사용할 수 있게 된다 그렇게 되면 개발자의 의도와 다르게 변수 할당이 일어날 수 있고 위험한 단점이 있기 때문에  변수를 선언할 때는 let과 const를 사용해야 한다.
  •  변수 Hoisting 현상에서 var는 function scope 이기 때문에  선언하기 전에 할당을 하거나 출력을 해도 에러가 나지 않고 undefined 돼버려서 예측하기 힘든 코드가 되어 버린다 

function scope 란?

  • 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.

ES6부터 추가된 변수 let과 const 

block scope 란?

  • 모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.

let 

  • 변수 재선언 불가능 , 변수 재할당 가능 
  • block scope이다 

const (상수) 

  • 변수 재선언 불가능, 변수 재할당 불가능
  • const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화 해야한다 
  • 변수 네이밍은 되도록 대문자로 해준다 
  • block scope이다  
  • 재할당이 필요 없고 바뀌면 안 되는 변수가 필요할 때 사용 하기 적절하다 

let과 const 호이 스팅 

  • let과 const는 호이스팅은 되지만, undefined로 초기화되는 것이 아니라 초기화가 필요한 상태가 되며, 이때 변수를 불러올 경우 ReferenceError가 발생한다.
728x90