JavaScript let, const 블록레벨 스코프

그거아냐·2025년 1월 1일
0

자바스크립트

목록 보기
40/41
post-thumbnail

let, const 블록레벨 스코프

var로 선언한 변수의 문제점

ES5까지는 변수를 선언하기 위해 var만 사용할 수 있었다.

var는 중복 선언이 가능하여, 이미 선언한 변수를 덮어씌워, 사이드 이펙트가 발생할 확률을 높이는 문제가 있었다.

var로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.

var로 선언한 변수는 호이스팅에 의해 스코프의 선두로 끌어 올려진것 처럼 동작한다. 일반적인 프로그램의 흐름상 맞지 않고, 가독성을 떨어뜨린다.

let 키워드

앞서 말한 var의 단점을 보완하기 위해 ES6부터 등장한 변수 선언 키워드이다.

변수 중복 선언 금지 : let은 동일한 이름의 변수를 선언할 수 없다.
블록 레벨 스코프 : let으로 선언한 변수는 블록레벨 스코프를 따른다.
변수 호이스팅 안됨 : let으로 선언한 변수는 변수 호이스팅이 발생하지 않는것처럼 작동한다. (정확히는 선언단계가 먼저 실행되지만, 변수 선언문에 도달해서 실행된다. 선언만 일어나면 TDZ에 있다가 초기화되어야 TDZ에서 나온다.)
모든 선언 va, let, const, function, class등 모두 호이스팅 되지만 let, const, class는 호이스팅 되지 않는 것처럼 작동한다.

const 키워드

const 는 상수를 선언하기 위해 사용한다.
const 는 선언과 동시에 초기화 해야한다.

블록 레벨 스코프 : const으로 선언한 변수는 블록레벨 스코프를 따른다.
변수 호이스팅 안됨 : const으로 선언한 변수는 변수 호이스팅이 발생하지 않는것처럼 작동한다.
재할당 금지 : 상수이기 때문에 let과 달리 재할당이 금지된다. const로 선언되 변수에 객체를 할당한 경우, 객체의 변경을 통해 재할당된것처럼 작동하게 할 수 있다.

그래서 언제씀?

변수 선언에는 기본적으로 const를 사용하고, let은 재할당이 필요한 경우에 한정해서 사용하는 것이 좋다.
ES6를 사용한다면 var 키워드는 사용하지 않는다.
변수를 선언할때는 const를 먼저 사용하고, 코딩중에 재할당이 필요하면 let으로 바꾸는 습관을 기르자!

profile
지금 하고 있는 그거 그거아냐

0개의 댓글