4장 변수
변수란?
- 하나의 값을 저장하기 위해 확보한 메모리 공간 자체
- 메모리 공간을 식별하기 위해 붙인 이름
식별자 = 이름[클래스 이름, 변수 이름...]
- 자바와 동일하게 식별자는 어떤 값을 구별해서 식별할 수 있는 고유 이름
- 값이 아니라 메모리 주소 기억함.
변수 선언
- 변수 생성
- 값을 저장하기 위한 메모리 공간을 확보
- 변수 선언할 때 var, let, const 키워드 사용
ES 5 -> var
ES 6 -> let, const
키워드
var, let, const와 같은 키워드는 자바스크트 코드를 해석하고 실행하는 자바스크립트 엔진이 수행할 동작을 규정한 일종의 명령어
undefined
변수 선언 2단계
- 선언 단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재 알림
- 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화
var 키워드 변수 선언 단계
- 선언 + 초기화 단계 동시 진행
- var 키워드는 암묵적으로 초기화 수행하여 쓰레기값에 대한 위험으로부터 안전
변수 선언의 실행 시점과 변수 호이스팅
- 어디에 있든 변수 선언 + 모든 선언문(변수 선언문, 함수 선언문 등을) 가장 먼저 실행, 이를 [소스코드 평가 과정]라고 함.
- 소스코드 평가 과정이 끝나면 나머지 소스코드를 한 줄씩 순차적으로 실행
- 변수 호이스팅 : 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트의 특징
console.log(score);
var score;
값의 할당
- 값의 할당 또한 변수 호이스팅처럼 런타임 이전에 변수 선언이 우선 실행되고 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
- 변수 선언과 값의 할당을 하나의 문으로 작성해도 변순 선언과 값의 할당을 2개의 문으로 나누어 각각 실행
var score = 80;
예제
console.log(scroe);
score = 80;
var score;
console.log(score);
값의 재할당
재할당 이전 값 처리
var score = 80;
score = 90;
score 값이 재할당 되더라도, 재할당 전 선언된 값 undefined와 80은 메모리 공간은 유지, 가비지 콜렉터에 의해 나중에 자동 해체
5장. 표현식과 문
값
리터럴
- 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기
표현식
문
- 프로그램을 구성하는 기본 단위이자 최소 실행 단위
- 토큰 : 더 이상 나눌 수 없는 기본 요소(키워드 식별자, 세미콜론...)
세미콜론과 세미콜론 자동 삽입 기능
- 세미콜론은 옵션
- 0개 이상의 문을 중괄호로 묶은 코드 블록 뒤에는 세미콜론을 붙이지 않음.(예 : if문, for문, 함수 등)
- 세미콜론 자동 삽입 기능(ASI)
function foo () {
return
{}
표현식인 문과 표현식이 아닌 문
- 구별 방법은 변수에 할당해 보는 것
- 평가할 수 없다면 표현식 아닌 문
출처 : 모던 자바스크립트 Deep Dive(P.34 ~ P.57)
저자 : 이웅모 지음, 위키북스