본문 바로가기

TIL

모던 자바스크립트 Deep Dive 04장 변수

4장: 변수

4.1 변수란 무엇인가?

  • 변수(Variable): 데이터를 저장하고 참조하기 위한 식별자.
  • 변수 선언: var, let, const 키워드를 사용하여 변수를 선언.

4.2 식별자 네이밍 규칙

  • 식별자(Identifier): 변수명, 함수명 등을 지칭하는 용어.
  • 네이밍 규칙:
    • 길이 제한 없음.
    • 유니코드 문자, 숫자, 달러 기호($), 언더스코어(_) 사용 가능.
    • 숫자로 시작 불가능.
    • 예약어 사용 불가능.

4.3 변수 선언

  • var: 함수 스코프를 갖고 있고, 중복 선언이 가능. 호이스팅 발생.
  • let: 블록 스코프를 갖고 있고, 중복 선언이 불가능. 호이스팅 발생.
  • const: 블록 스코프를 갖고 있고, 중복 선언이 불가능. 선언 후 재할당 불가능.

4.4 변수 호이스팅

  • 호이스팅(Hoisting): 변수 및 함수 선언이 코드의 최상단으로 옮겨지는 현상.
  • var 변수: 선언부가 호이스팅되어 초기화 전에 참조 가능.
  • let과 const 변수: 호이스팅은 발생하지만 일시적 사각지대(Temporal Dead Zone)가 존재해 초기화 전에 참조하면 에러 발생.

4.5 변수의 스코프와 라이프사이클

  • 스코프(Scope): 변수의 유효 범위.
  • 전역 스코프(Global Scope): 전역에서 접근 가능한 범위.
  • 지역 스코프(Local Scope): 함수 내부에서 접근 가능한 범위.
  • 블록 스코프(Block Scope): {} 내부에서 선언된 변수는 해당 블록 내에서만 유효.

4.6 전역 객체

  • 전역 객체(Global Object): 브라우저 환경에서는 window, Node.js 환경에서는 global 객체.
  • 전역 변수: 전역 객체의 프로퍼티로 선언된 변수.

4.7 let과 const

  • let: 재할당 가능한 변수 선언에 사용.
  • const: 재할당이 불가능한 상수 선언에 사용. 객체의 불변성을 보장하지 않음.

4.8 변수 선언의 실행 시간과 런타임

  • 선언(Declaration)과 할당(Assignment): 선언은 컴파일 단계에서 실행되고, 할당은 런타임에 실행됨.

4.9 변수 선언의 실행 순서

  • 변수 선언문이 코드 내 어디에 위치하든 항상 최상단으로 호이스팅됨.
  • 초기화가 따라오지 않는 선언은 undefined로 초기화됨.