Web/JavaScript

[JavaScript] 모던 자바스크립트 Deep Dive 4장 - 변수

어징베 2022. 7. 11. 21:27


4.1 변수란 무엇인가? 왜 필요한가?

변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념으로 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름. 즉, 값의 위치를 가리키는 상징적인 이름

 

- 변수이름: 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름

- 변수 값: 변수에 저장된 값

- 할당: 변수에 값을 저장하는 것


4.2 식별자

어떤 값을 구별해서 식별할 수 있는 고유한 이름 = 변수 이름

값이 아니라 메모리 주소를 기억


4.3 변수 선언

변수를 생성하는 것. var, let, const 키워드를 사용

 

* 키워드: 자바스크립트 코드를 해석하고 실행하는 자바스크립트 엔진이 수행할 동작을 규정한 일종의 명령어

* undefined: 자바스크립트에서 제공하는 원시 타입의 값

 

자바스크립트 엔진의 변수 선언

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

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

 

* 만약 초기화 단계를 거치지 않으면 확보된 메모리 공간에는 쓰레기 값이 있을 수 있다. var 키워드는 암묵적으로 초기화를 수행


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

console.log(score); // undefined

var score; // 변수 선언문

 

변수 호이스팅: 변수 선언문이 코드의 선두로 끌어 올려진 것 처럼 동작하는 자바스크립트 고유의 특징

 

* ReferenceError가 아닌 undefined이 출력되는 이유: 자바스크립트 엔진은 변수 선언이 소스코드의 어디에 있든 상관없이 다른 코드보다 먼저 실행

 


4.5 값의 할당

할당 연산자 = 를 사용

var score = 80; // 변수 선언과 할당

console.log(score); // undefined

var score = 80; // 변수 선언과 값의 할당

console.log(score); // 80

자바스크립트 엔진은 변수의 선언과 값의 할당을 2개의 문으로 나누어 각각 실행한다.

변수선언은 런타임 이전. 값의 할당은 런타임에 실행


4.6 값의 재할당

var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당

재할당은 현재 변수에 저장된 값을 버리고 새로운 값을 저장하는 것

값을 재할당할 수 없어서 저장된 값을 변경할 수 없다면 변수가 아니라 상수(const 키워드)이다.

 


4.7 식별자 네이밍 규칙

1. 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어( _ ), 달러 기호($)를 포함할 수 있다.

2. 단, 식별자는 특수문자를 제외한 문자, 언더스코어( _ ), 달러 기호($)로 시작해야 한다. 숫자로 시작하는 것은 허용하지 않는다.

3. 예약어는 식별자로 사용할 수 없다.