본문 바로가기

javascript Deep Dive

Chap.04 변수

변수란?

- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름

 

변수에 여러 개의 값을 저장하는 방법

// 변수는 하나의 값을 저장하기 위한 수단이다.
 var userId = 1;
 var userName = 'Lee';
 
 // 객체나 배열 같은 자료구조를 사용하면 여러 개의 값을 하나로 그룹화해서 하나의 값처럼 사용할 수 있다.
 var user = { id: 1, name : 'Lee' };
 
 var users = [
 	{ id: 1, name : 'Lee' },
    { id: 2, name : 'Kim' }
];

식별자

- 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.

- 식별자는 값이 아니라 메모리 주소를 기억하고 있다.

 

변수선언

- 변수를 사용하려면 반드시 선언이 필요하다. 변수를 선언할 때는 var, let, const 키워드를 사용한다.

var 키워드의 단점

- var 키워드의 여러 단점 중에서 가장 대표적인 것이 블록 레벨 스코프를 지원하지 않고 함수 레벨 스코프를 지원한다는 것이다. 이로 인해 의도치 않게 전역 변수가 선언되어 심각한 부작용이 발생하기도 한다.

 

변수 선언의 단계

선언단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.

초기화 단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다.

 

변수 이름은 어디에 등록되는가?

변수 이름을 비롯한 모든 식별자는 실행 컨텍스트에 등록된다. 실행 컨텍스트는 자바스크립트 엔진이 소스코드를 평가하고 실행하기 위해 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다. 자바스크립트 엔진은 실행 컨텍스트를 통해 식별자와 스코프를 관리한다.

 

변수 선언의 실행 시점과 변수 호이스팅

console.log(scroe); // undefined

var score; // 변수 선언문

- 변수 선언문 보다 변수를 참조하는 코드가 앞에 있다. RefernceError가 발생할 것처럼 보인다. 하지만 참조에러가 발생하지 않고 undefined가 출력된다.

 

참조에러가 발생하지 않는 이유

- 변수 선언이 소스코드가 한 줄씩 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.

 

 

'javascript Deep Dive' 카테고리의 다른 글

Chap.10 객체 리터럴  (0) 2023.08.22
Chap.08 제어문  (0) 2023.08.03
Chap.07 연산자.  (0) 2023.08.02
Chap.06 데이터 타입  (0) 2023.08.01
Chap.05 표현식과 문  (0) 2023.07.31