FrontEngineer JungBam

var에서 let, const로 바뀐 이유 본문

자바스크립트 개념

var에서 let, const로 바뀐 이유

정밤톨 2022. 11. 18. 19:39

1. var는 전역 스코프와 함수 스코프만을 갖고 있어 {}블록 스코프를 이용한 변수의 생명주가를 부여하지 못하고 {}단위에서의 변수를 사용하고자 할때 사용할 수 없음. let과 const는 블록 스코프를 가지며 이로 인해 함수 내부 블록 스코프에서도 별도의 스코프로 변수들이 존재하는 범위를 지정하여 사용할 수 있음.

 

2. var의 중복선언 가능한 점이 휴먼 이슈로 이어질 수 있는 부분

※ var a로 중복 선언이 가능함. 

      var a = 2 

      var a = 3

→ 1번 이유와 2번 이유를 합치면 함수 내부에서 의도치 않은 선언 으로 인하여 예기치 못한 오류와 예상하지 못한 결과를 반환할 수 있음.

 

3.  호이스팅의 차이

var는 변수 호이스팅 과정에서 선언되는 코드 이전에도 식별자는 선언되어 있어 참조가 가능하다.(할당문 이전 undefined)

let, const는 변수 호이스팅 과정이 이루어지나 일시적 사각지대에서는 참조되지 않는 값으로 작동한다.

즉 var는 호이스팅되어 선언과 초기화가 동시에 이루어져 선언되고 초기화 이전까지 참조되어 undefined가 되나 let,const는 선언과 초기화가 별도로 이루어져 호이스팅으로 인하여 선언이 되더라도 초기화가 될 때까지는 참조될 수 없는 일시적 사각지대(TDZ)가 발생하여 참조되지 않고 ReferenceError를 불러온다.

반응형

'자바스크립트 개념' 카테고리의 다른 글

Deep to 함수 (JavaScript)  (0) 2022.11.22
전역 변수의 문제점  (0) 2022.11.18
깊은 복사와 얕은 복사  (0) 2022.11.18
JavaScript의 타입 / 자료구조  (0) 2022.11.18
스코프, 섀도잉  (0) 2022.11.12
Comments