Daily Morning Study
[모던 자바스크립트 DeepDive] 5일차 - 변수2
만발한매화
2025. 7. 3. 10:08
본 문서는 "모던 자바스크림트 DeepDive"를 데일리로 학습하며 기억할 부분과 추가학습한 부분을 공유한다.
1. 변수선언
- 변수 선언시 이미 메모리공간에 'undefined'값이 할당된다. => "초기화"(최초 값 할당)
- 변수 이름은 실행 컨텍스트(execution context)에 등록된다.
- 실행 컨텍스트란? 엔진이 소스코드 평가, 실행 가능하도록 필요환경 제공. (관리에 도움)
- 값이 초기화 되지 않으면 쓰레기값(garbage value)가 쌓인다
2. 호이스팅
- 변수 선언은 런타임이 아닌 이전 단계에서 먼저 실행된다.
- 변수 선언전에 콘솔을 찍어도 찍힌다. => 단, 할당 전의 undefined가 찍힌다.
- 할당은 소스코드가 순차적으로 실행되는 런타임에서 실행
3. 값 할당
- 초기화 -> [새로운 메모리 공간 확보] -> 할당 값 저장
4. 값 재할당
- 재할당 불가시 '상수(constant)'라 지칭
- 재할당 과정 : 초기화 -> [새로운 메모리 공간 확보] -> 최초 할당 -> [새로운 메모리 공간 확보] -> 재할당
- 쓰레기 값이 쌓이나, JS는 가비지 콜렉터를 내장하고 있어, 메모리누수(memory leak) 방지
- 언매니지드언어 (C언어) : 개발자가 메모리 관리를 하여야한다.
- 매니지드언어 (자바스크립트) : 언어차원에서 담당. 단, 언제 지워질지 모름 -> 성능면에서 어느정도 손실 감수
5. 식별자
- 네이밍 규칙
- 숫자로 시작 불가
- 예약어 사용 지양 (strict mode에서는 불가)
- 한글, 일본어등도 가능하나, 영어 지향
- 네이밍 컨벤션
- 카멜 케이스 : 변수, 함수
- 스네이트 케이스
- 파스칼 케이스 : 생성자함수(constructor function) - 객체 생성 함수(new), 클래스
- 헝가리언 케이스 : 변수 타임 또는 목적을 접두어로 붙인다.
- Ex) var strFirstName, var observable$