본문 바로가기

JavaScript

[Deep dive] 4장 변수

4.1 변수란 무엇인가?

 

변수(variable)

- 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 

- 그 메모리 공간을 식별하기 위해 붙인 이름

- 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행

 

ex)

var result = 10 + 20;

- 10+20은 연산을 통해 새로운 값 30을 생성

- 연산을 통해 생성된 값 30은 메모리 공간에 저장 

 

- 변수 이름 

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

 

- 변수 값

 : 변수에 저장된 값 

 

- 할당 (assignement)

 : 변수에 값을 저장하는 것

 

- 참조(reference)

 : 변수에 저장된 값을 읽어 들이는 것

 

- 변수 이름을 사용해 참조를 요청하면 자바스크립트 엔진은 변수 이름과 매핑된 메모리 주소를 통해 

메모리 공간에 접근해서 지정된 값 반환

 

4.2 식별자 

 

- 변수 이름을 식별자라고도 함

 

- 식별자(identifier)

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

 

-식별자는 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺으며, 이 매핑 정보도 메모리에 저장되어야 함

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

 

 

4.3 변수 선언

 

변수 선언 (variable declaraiton)

- 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 

연결해서 값을 저장할 수 있게 준비 

 

- 변수를 사용하려면 반드시 선언 필요 

 

- 변수를 선언할 때는 var,let,const 키워드 사용

 

var 키워드 

- 뒤에 오는 변수 이름으로 새로운 변수를 선언할 것을 지시하는 키워드 

var score; //변수 선언(변수 선언문)

- 확보된 메모리 공간에는 자바스크립트 엔진에 의해 undefined라는 값이 암묵적으로 할당되어 초기화 

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

 

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

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

 

- var 키워드를 사용한 변수 선언은 선언 단계와 초기화 단계가 동시에 진행 

- 변수 이름 score를 등록하고, 초기화 단계를 통해 score 변수에 암묵적으로 undefined를 할당해 초기화 

 

- 초기화 (initialization)

 : 변수가 선언된 이후 최초로 값을 할당하는 것

 

- 초기화 단계를 거치지 않으면 확보된 메모리 공간에는 쓰레기 값(garbage value)가 들어감

 

 

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

 

- 변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 실행

 

- 자바 스크립트 엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평가 과정을

거치면서 소스코드를 실행하기 위한 준비를 함

 

- 변수 선언이 소스코드의 어디에 위치하는지와 상관업이 어디서든지 변수를 참조 가능 

console.log(score); //undefined
var score; //변수 선언문

 -> 참조에러가 발생하지 않고 undefined 출력 

 

 - 변수 호이스팅 (variable hoisting)

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

 

 

4.5 값의 할당 

 

- 변수에 값을 할당(assignment)할 때는 할당 연산자 = 를 사용

- 우변의 값을 좌변의 변수에 할당

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

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

- 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행

 

- 변수에 값을 할당 할때는 이전값 undefined가 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 할당값 80을

새롭게 저장하는 것이 아니라 새로운 메모리 공간을 확보하고 그곳에 할당값 80을 저장

console.log(score); //undefined
var score = 80; //변수 선언과 값의 할당
console.log(score); //80

 

4.6 값의 재할당 

 

- var 키워드로 선언한 변수는 값을 재할당 가능

 

- 재할당 

: 현재 변수에 저장된 값을 버리고 새로운 값으로 저장하는 것

 

- 불필요한 값 (80, undefined)은 가비지 콜렉터(garbage collector)에 의해 메모리에서 자동 해제 

 

 

 

4.7 식별자 네이밍 규칙 

 

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

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

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

 

'JavaScript' 카테고리의 다른 글

[Deep dive] 6장 데이터 타입  (0) 2023.08.07
[Deep dive] 5장 표현식과 문  (0) 2023.08.07
17장 마무리 문제 2  (0) 2023.04.14
17장 마무리 문제 1  (0) 2023.04.14
17장 예제 - DOM에서 노드 삭제하기 / 실습 3  (2) 2023.04.14