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 |