티스토리 뷰

기초탄탄

[JavaScript] var / let / const

✨sunee✨ 2022. 7. 4. 22:32
변수의 범위

 

Global Scope 전역변수, 외부에서 선언되어 어디든 접근 가능
Local Scope function scope 함수내 정의된 변수는 함수 외부에서 접근 불가
block scope 코드 블록내 정의된 변수는 블록 외부에서 접근 불가

 

var (function-scoped)

 

ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다.


var는 전역변수로,
전역 변수는 사용이 편리하다는 장점이 있지만 불가피한 상황을 제외하고 사용을 억제해야 한다.
전역 변수는 유효 범위(scope)가 넓어서 어디에서 어떻게 사용될 것인지 파악하기 힘들며, 비순수 함수(Impure function)에 의해 의도하지 않게 변경될 수도 있어서 복잡성을 증가시키는 원인이 된다.
따라서 변수의 스코프는 좁을수록 좋다.

 

ES6는 이러한 var 키워드의 단점을 보완하기 위해 let과 const 키워드를 도입하였다.

 

 

let /  const (block-scoped)

 

let과 const 는 동일한 이름을 갖는 변수를 중복해서 선언 할 수 없으며,

변수를 중복 선언하면 문법 에러(SyntaxError)가 발생한다.

 

let과 const 의 차이점은 재할당 여부다.

let은 재할당이 자유로우나 const는 재할당이 금지된다.

 

아래 예제를 보면 좀 더 쉽게 이해 된다.

See the Pen Untitled by sueun (@su_nee) on CodePen.

 

정리

 

변수 선언에는 기본적으로 const를 사용하고, 재할당이 필요한 경우에 한정해 let 을 사용하는 것이 좋다.

그리고 객체를 재재할당이 필요한 경우에 한정해 let 을 사용한다. 이때, 변수의 스코프는 최대한 좁게 만든다.

재할당이 필요 없는 상수와 객체에는 const 를 사용한다.

 

 

 

 

참고문헌 https://poiemaweb.com/es6-block-scope

댓글