- 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다.
4.0 메모리셀
- 1바이트 크기. (메모리셀의 집합 - 메모리)
- 각 샐 메모리 주소
- 임의의 위치에 저장
4.1 변수 (variable)
- 변수의 쓸모?
- 직접적인 메모리 제어 risk
- 값이 저장된 메모리 주소 알 수 없음. (주소를 통해 접근은 무리)
- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
- (값을 저장하고 참조하는 매커니즘, 값을 위치를 가리키는 상징적인 이름)
-
메모리 공간의 주소로 치환되어 실행
- 저장 : 할당(assignment), 읽기 : 참조 (reference)
4.2 식별자 (identifier)
- 어떤 값을 구별해서 식별할 수 있는 고유의 이름 (변수의 이름)
- 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺음. (매핑 정보도 메모리에 저장)
- 값이 아니라 주소를 저장
- 선언을 통해 존재 알림.
4.3 변수 선언 (variable declaration)
- 메모리 공간 확보 & 변수 이름과 메모리 주소 연결
- var, let, const
- 변수 선언의 단계 (동시 진행)
- 선언 단계 : 이름을 등록, 엔진에 존재 알림
- 초기화 단계 : 메모리 공간 확보, undefined 를 할당.
4.4 변수 선언 시점, 변수 호이스팅 (variable hoisting)
- 변수 선언은 런타임 이전 단계에서 실행 (엔진의 소스 코드 평가 과정)
- 변수 선언문이 선두로 끌어 올려진 것처럼 동작
- var, let, const, function, function*, class
4.5 값의 할당(assignment)
- 우변 = 좌변 (우변←좌변 대입)
- 한 줄로 선언 + 할당 (각각 쓰는 것과 동일 작동 ∵ 할당은 런타임)
4.6 재할당
- <선언(선언 + 초기화)> : undefined 할당
- _<할당>_ : 다른 주소에 값 할당할당>
- _<재할당>_ : 또 다른 주소에 재할당.재할당>
- 불필요한 값들은 가비지 콜렉터에 의해 자동 해제 (언제 해제 예측 X)
4.7 식별자 네이밍 규칙
- 문자, 숫자, _ (언더스코어), $ (달러) 포함 가능 (특수문자 금지)
- 숫사 시작 X
- 예약어는 불가 (이미 사용 or 예정)
- 케이스
- 변수, 함수 : camelCase
- 생성자 함수, 클래스 : PascalCase
이 포스트는 모던 자바스크립트 Deep Dive를 공부하며 정리한 내용입니다.