[JS] var, let, const의 차이

강은비·2021년 12월 21일
0

JS

목록 보기
7/19
post-thumbnail
post-custom-banner

변수

  • 변수는 데이터를 저장하기 위한 임시 기억공간이다.
  • 변수 선언: 데이터를 저장할 임시 공간을 메모리에 할당
    • 변수는 var, let, const 중 하나의 키워드로 선언될 수 있다.
  • 변수 할당 (초기화): 변수에 값을 저장 (메모리의 변수 기억공간에 값을 저장하여 초기화)
  • 변수 참조: 변수에 저장된 값을 읽어들이는 것

👉 전역 변수와 지역 변수

  • 전역 변수: 전역 공간에서 선언된 함수
  • 지역 변수: 전역 공간에서 선언되지 않은 함수 (주로 함수 내에서 선언된 변수를 말함)
  • 전역 변수는 코드 어디서든지 참조할 수 있고, 지역 변수는 해당 스코프 내에서만 참조할 수 있다.
  • 전역 변수의 경우 변수 이름이 중복될 수 있고, 의도치 않은 재할당에 의한 상태 변화로 코드를 예측하기 어렵게 만들 수 있다.


var, let, const의 차이

👉 스코프

  • 스코프란 식별자의 유효범위 (접근할 수 있는 범위)를 말한다.
  • var로 선언된 변수의 경우 함수 레벨 스코프를 갖는 반면, let과 const로 선언된 변수는 블록 레벨 스코프를 갖는다.
    • 함수 레벨 스코프: 함수를 선언할 때마다 새로운 스코프를 생성하며, 함수 내에서 선언한 변수는 그 함수 내에서만 유효하고, 함수 외부에서는 참조할 수 없다.
    • 블록 레벨 스코프: 코드 블록 내에서 선언된 변수는 그 코드 블록 내에서만 유효하고, 블록 외부에서는 참조할 수 없다.

👉 호이스팅

  • var, let, const로 선언된 변수 모두 호이스팅의 대상이다.
  • 변수의 선언문과 할당문을 나누어 선언문만 해당 스코프의 최상단에 옮겨진 것처럼 동작한다.
  • var로 선언된 변수는 호이스팅 시 undefined로 초기화되어, 만약 값을 할당하기 전에 변수를 참조하면 undefined를 반환한다.
  • let이나 const로 선언된 변수는 호이스팅 시 초기화되지 않는다.
  • 이때 let이나 const로 선언된 변수는 선언된 시점부터 초기화되기 전까지 변수를 참조할 수 없는 일시적 사각 지대 (TDZ)에 있게 된다.
  • 만약 초기화되기 전 변수를 참조하면 참조에러가 발생한다.

👉 재할당 및 중복 선언

  • var로 선언된 변수는 재할당과 중복 선언 모두 가능하다.
  • let으로 선언된 변수는 재할당은 되지만, 중복 선언은 불가하다.
  • const로 선언된 변수는 재할당과 중복 선언 모두 불가하다.

참고
var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅, 스코프

post-custom-banner

0개의 댓글