변수
- 메모리 공간을 식별하기 위해 붙인 이름
- 식별자
- 값이 아닌 메모리 주소를 가리킴
메모리
: 데이터를 저장할 수 있는 메모리 셀의 집합체
- 메모리 주소: 메모리 공간의 위치
- 메모리 저장값: 모두 2진수
- 메모리 주소는 상황에 따라 변함
-> 메모리 주소를 통해 값에 직접 접근하는 것은 좋지 않음 ..
=> 변수
이용
1. let
2. const
- 상수, 재할당이 불가능
- 블록 레벨 스코프
- 재할당이 불가능할 뿐, 불변값은 아님!
const a = 3;
a = 4;
const obj = {};
obj.a = 42;
3. var
- 과거 변수 선언 방식
- 함수 레벨 스코프
- 암묵적 초기화 수행
- 자동으로 undefined 할당
" const
를 기본으로 사용하고, 재할당이 반드시 필요한 변수만 let
을 이용해 선언해라."
- 변수 값이 블록 내에서 유지될 것이라 짐작하여 실수를 찾아내는 일을 돕는다.
var
변수 사용 굳이 하지 않는게 좋다.
변수 호이스팅
- 변수 선언문이 코드 선두로 끌어 올려진 것 처럼 동작
1. 변수 선언
- 런타임 이전에 모든 선언문(변수, 함수, 클래스 등) 실행
- 런타임: 소스코드가 한 줄씩 순차 실행되는 시점
2. 값의 할당
- 런타임에 실행
- 기존 메모리 공간이 아닌 새로운 메모리 공간을 확보하여 할당 값 저장
식별자 네이밍 규칙
- 허용된 특수기호: $, _
- 네이밍 컨벤션: 가독성 좋게 단어를 구분하기 위해 규정한 명명 규칙
- camelCase -> 변수, 함수
- snake_case
- PascalCase -> 생성자 함수, 클래스
- hungaruan
그외
실행 컨텍스트
- 소스코드를 평가하고 실행하기 위한 환경 제공
- 실행결과를 실제로 관리하는 영역
- 변수 이름이 등록되는 곳
가비지 콜렉터
- managed language에 내장 (<> unmanaged language)
- 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 사용되지 않는 메모리 해제
- 메모리 누수 방지