• 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다.

4.0 메모리셀

  • 1바이트 크기. (메모리셀의 집합 - 메모리)
  • 각 샐 메모리 주소
  • 임의의 위치에 저장

4.1 변수 (variable)

  • 변수의 쓸모?
  1. 직접적인 메모리 제어 risk
  2. 값이 저장된 메모리 주소 알 수 없음. (주소를 통해 접근은 무리)
  • 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
  • (값을 저장하고 참조하는 매커니즘, 값을 위치를 가리키는 상징적인 이름)
  • 메모리 공간의 주소로 치환되어 실행

  • 저장 : 할당(assignment), 읽기 : 참조 (reference)

4.2 식별자 (identifier)

Untitled

  • 어떤 값을 구별해서 식별할 수 있는 고유의 이름 (변수의 이름)
  • 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺음. (매핑 정보도 메모리에 저장)
  • 값이 아니라 주소를 저장
  • 선언을 통해 존재 알림.

4.3 변수 선언 (variable declaration)

Untitled

  • 메모리 공간 확보 & 변수 이름과 메모리 주소 연결
  • var, let, const
  • 변수 선언의 단계 (동시 진행)
    1. 선언 단계 : 이름을 등록, 엔진에 존재 알림
    2. 초기화 단계 : 메모리 공간 확보, undefined 를 할당.

4.4 변수 선언 시점, 변수 호이스팅 (variable hoisting)

  • 변수 선언은 런타임 이전 단계에서 실행 (엔진의 소스 코드 평가 과정)
  • 변수 선언문이 선두로 끌어 올려진 것처럼 동작
  • var, let, const, function, function*, class

4.5 값의 할당(assignment)

Untitled

  • 우변 = 좌변 (우변←좌변 대입)
  • 한 줄로 선언 + 할당 (각각 쓰는 것과 동일 작동 ∵ 할당은 런타임)

4.6 재할당

  1. <선언(선언 + 초기화)> : undefined 할당
  2. _<할당>_ : 다른 주소에 값 할당
  3. _<재할당>_ : 또 다른 주소에 재할당.
  • 불필요한 값들은 가비지 콜렉터에 의해 자동 해제 (언제 해제 예측 X)

4.7 식별자 네이밍 규칙

  • 문자, 숫자, _ (언더스코어), $ (달러) 포함 가능 (특수문자 금지)
  • 숫사 시작 X
  • 예약어는 불가 (이미 사용 or 예정)
  • 케이스
    • 변수, 함수 : camelCase
    • 생성자 함수, 클래스 : PascalCase





이 포스트는 모던 자바스크립트 Deep Dive를 공부하며 정리한 내용입니다.