프로그래밍언어/Javascript

[JavaScript] 블록 스코프 선언 : let / const (var)

개발하는소유밍 2023. 12. 5. 00:30

한 사람이 작업해놓은 기존의 프로젝트를

팀이 커지고, 팀장님이 작업 파트 분배 후 최적화 작업을 진행하는 중에

기존의 작업물에서 모든 변수 선언이 var 로 되어있는 것을 개선하시겠다 하였다. 

 

프로젝트에 전부 var로 선언되어 있던 이유가 뭐였을까?


 

기존의 프로젝트는 ES5 기준으로 작성되어, 변수 선언은 var로만 작업했는데, ES6 사용이 가능해지면서, let 과 const 가 추가 됐다. 

 

1. ES (ECMAScript) 란?

▷ ECMAScript 는 Ecma 인터내셔널의 ECMA-262 기술 규격에 정의된 표준화된 스크립트 프로그래밍 언어

  넷스케이프 커뮤니케이션즈로 부터 Javascript가 개발되고 나서 MS로 부터 JScript 개발되었고, 두 언어는 호환되지 않는 경우가 있어, 기능이 모든 브라우저에서 동일하게 동작하지 않는 '크로스 브라우징 이슈' 가 나타났는데, 이 크로스 브라우징 이슈를 해결하기 위해 Javascript를 표준화 한 것이 ECMAScript이다.


자바스크립트에서의 변수 선언 방법 종류

 

참고 어휘

** 스코프(scope) : 식별자(변수명, 함수명, 클래스명 등)의 유효범위, 지역변수는 지역 스코프를 가져 해당 지역과 하위 지역에서만 참조 가능

** 호이스팅(Hoisting) : 변수나 함수 선언을 코드의 최상단으로 끌어올리는 것처럼 동작하는 특성

** 임시 데드존(TDZ) : 변수가 선언되었지만, 아직 초기화되지 않은 상태

  재할당 재선언 특징
var O O 호이스팅 가능
let O X 호이스팅 가능! 단, 다르게 호이스팅 → 임시데드존(TDZ)을 거쳐 간다
const  X X

 

300x250