[TIL] 240408 (변수, 호이스팅, TDZ)

·2024년 4월 8일

TIL

목록 보기
11/268

변수

  • var
    • 한 번 선언된 변수를 다시 선언할 수 있다.
    • 선언하기 전에 사용할 수 있다. 호이스팅 때문. 그러나 선언은 호이스팅 되지만 할당은 호이스팅되지 않는다.
    var name;
    console.log(name); // undefined (할당은 호이스팅되지 않음)
    name = 'Mike'; // 여기서 할당
    • 선언 및 초기화 단계 => 할당 단계
  • let
    • 한 번 선언된 변수를 다시 선언할 수 없다.
    • 선언하기 전에 사용할 수 없다. 호이스팅되지 않는 것은 아니다. 사용할 수 없는 이유는 TDZ(Temporal Dead Zone) 때문.
    • 선언 단계 => 초기화 단계 => 할당 단계
  • const
    • 선언 + 초기화 + 할당 (동시에)
  • 호이스팅
    • 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동
  • TDZ (Temporal Dead Zone)
    • 우리말로 번역하면 일시적 사각지대라는 의미. 스코프 시작~초기화 시작 사이의 구간을 의미함. 변수가 선언되고 변수의 초기화가 이루어지기 전까지의 구간이다.

스코프

  • 함수 스코프
    • var
    • 함수 내에서 선언된 변수만 그 지역 변수가 된다.
  • 블록 스코프
    • let, const
    • 코드 블록 내에서만 유효. 외부에서는 접근할 수 없음.
profile
웹 프론트엔드 개발자

0개의 댓글