4.1. 변수란 무엇인가? 왜 필요한가?
- 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 또는 식별할 수 있는 이름
- 애플리케이션은 데이터를 입력받아(input) 처리하고 그 결과를 출력하는(output) 데이터 관리가 핵심
- 컴퓨터는 CPU로 연산하고, 메모리로 데이터 기억
- 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체
- 컴퓨터는 메모리 셀의 크기(1바이트 단위)로 데이터 처리
- 각 셀은 고유의 메모리 주소를 가짐
- 연산된 값을 재사용할 수 있도록 메모리 공간, 즉 변수에 저장함
- 할당(assignment, 대입, 저장): 변수에 값을 저장
- 참조(reference): 변수에 저장된 값을 불러옴
- 변수 이름을 통해 매핑된 메모리 공간에 접근하여 저장된 값을 사용함
4.2. 식별자
- 식별자 (identifier): 데이터를 식별할 수 있는 고유한 이름
- 식별자는 값이 아니라 메모리 주소를 기억
- 변수, 함수, 클래스 등의 이름이 모두 식별자
4.3. 변수 선언
- 변수 선언이란 값을 저장하기 위해 메모리 공간을 확보하고 메모리 공간의 주소와 연결하여 사용할 수 있는 변수를 생성하는 것
- var, let, const 사용
- 선언 단계: 변수 이름을 등록하고 자바스크립트 엔진에 변수의 존재를 알림
- 초기화 단계: 메모리 공간 확보하고 최초로 값을 할당 (var 키워드 변수는 undefined 할당)
4.4. 변수 선언의 실행 시점과 변수 호이스팅
- 모든 선언문(변수, 함수 등)은 런타임 이전에 먼저 실행 후 런타임 실행
- 호이스팅(hoisting): 선언문이 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
4.5. 값의 할당
- 할당(assignment): 할당 연산자 '=' 사용
4.6. 값의 재할당
- 재할당: 변수에 기존 저장된 값을 버리고 새로운 값을 저장
- 상수(constant)는 재할당 불가
4.7. 식별자 네이밍 규칙
- 특수문자 제외한 문자, 숫자, 언더스코어(_), 달러($) 사용
- 숫자로 시작은 허용하지 않음
- 예약어는 사용할 수 없음 (await, async, catch 등)
- 알파벳 외 문자는 권장하지 않음
- 네이밍 컨벤션
- 카멜 케이스: 일반적으로 변수, 함수
- 파스칼 케이스: 생성자 함수, 클래스명
[출처] 모던 자바스크립트, Deep Dive