[Javascript]변수와 블록 레벨 스코프

개발새발🦶·2022년 11월 3일
0
post-thumbnail

let, const 키워드


📌var 키워드 문제점

  • 변수 중복 선언 허용
  • 함수 레벨 스코프 : 함수 내부에서 선언한 중복 var변수도 전역 변수가 되어 값이 바뀐다.
  • 변수 호이스팅 발생 : var 변수는 변수 선언문 이전에 값이 있다면 참조할 수 있다.

이러한 문제점 때문에 개발시 안전한 let 키워드와 const 키워드를 사용한다.


📌let 키워드

let 키워드로 선언한 변수는 선언단계와 초기화 단계로 분리되어 진행된다.
즉, 런타임 이전에 암묵적으로 선언 단계가 먼저 실행되지만, 초기화 단계는 변수 선언문에 도달했을 때 실행된다.

  • 변수 중복 선언 금지 : 변수의 값은 변경할 수 있지만 중복 선언은 안된다
  • 블록 레벨 스코프 : let으로 선언한 변수는 모든 코드 블록(함수, if문, while문, try/catch문 등)을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다
  • 변수 호이스팅 미발생
  • let으로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다
let foo = 1;  // 전역 변수

{
  console.log(foo); // Error
  let foo = 2;  // 지역 변수
}

📌const 키워드

  • const로 선언한 변수는 선언과 동시에 초기화 해야한다.
  • 재할당이 금지된다. 즉, 상수이다.
  • 객체를 할당할 경우 값을 변경할 수 있다.
  • 재할당을 금지할 뿐, 불변을 의미하지는 않는다.
const person = {
  name: 'Lee'
};
person.name = 'Kom';
console.log(person);  // {name: 'kom'}

변수 선언에는 기본적으로 const를 사용하고, 재할당이 필요한 경우에 한정하여 let을 사용한다. 의도치 않은 재할당을 방지하기 때문에 const를 지향한다.

profile
발로하는 코딩 정리기

0개의 댓글