4장 변수
4-1. 변수란 무엇인가? 왜 필요한가?
- 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
- 프로그래밍 언어에서 값을 저장하고 참조하는 메커니즘으로, 값의 위치를 가리키는 상직적인 이름.
var userId = 1;
//변수는 하나의 값을 저장하기 위한 수단.
var user = { id: 1, name: 'Lee' };
//객체, 배열과 같은 자료구조를 사용하여 여러 개의 값을 하나의 값처럼 사용할수 있다.
변수이름(변수명)
: 메모리 공간에 저장된 값을 식별할 수 있는 이름 (ex) userId변수값
: 변수에 저장된 값 (ex) 1할당assignment(대입, 저장)
: 변수에 값을 저장하는 것참조reference
: 변수에 저장된 값을 읽어 들이는 것
4-2. 식별자
- 변수의 이름을 식별자 identifier 라고도 한다, 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름 이며 값이 아니라 메모리 주소를 기억하고 있다.
즉 메모리 주소에 붙인 이름 이라고도 할 수 있다. - 식별자란 변수 이름에서만 국한 되는것이 아닌, 변수, 한수, 클래스 등의 모든 이름에 사용이 가능하지만, 네이민 규칙을 준수하여야만 한다.
4-3. 변수 선언
- 변수를 생성 하는 것. 즉 값을 저장 하기위한 공간을 확보하고, 변수 이름과 확보된 메모리 공간의 주소를 연결 해서 값을 저장할 수 있게 준비하는 것.
var score; //변수선언
- 이때 scroe라는 변수를 선언 하였지만, 값을 할당하지 않았다. (초기화 시키지 않았다.)
이때는 자바스크립트의 독특한 특징으로 엔진에 의해 undefined 라는 값이 암묵적으로 할당되어 초기화 된다.
undefined
= 자바스크립트에서 제공하는 원시 타입의 값
- 엔진에서는 2단계에 거쳐 변수 선언을 수행한다.
선언 단계
: 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.
초기화 단계
: 값을 저장하기 위해 메모리 공간을 확보하고 암묵적으로 undefined 를 할당해 초기화 한다.
4-4. 변수 선언의 실행 시점과 변수 호이스팅
console.log(score);
var score;
- 자바스크립트의 경우 인터프리터에 의해 한줄씩 실행 되므로 참조에러 ReferenceError가 발생할 것 같지만, 발생하지 않는다.
- 변수 선언이 소스코드 한 줄씩 순차적으로 실행되는 시점, 즉 런타임runtime이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.
- 즉 자바스크립트 엔진은 변수 선언이 소스코드 어디에 있던 상관 없이 다른코드 보다 먼저 실행하고 이러한 고유한 특징을 변수 호이스팅 variable hoisting 이라고 한다.
4-5. 값의 할당
var score; //변수 선언
score = 80 ; //값의 할당
var score = 80; //변수 선언과 값의 할당이 하나의 문으로 단축이 가능하다.
- 변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
4-6. 값의 재할당
var score = 80; //변수 선언과 값의 할당
score = 90; //값의 재할당
- 재할당이란 이미 값이 할당되어 있는 변수에 새로운 값을 다시 할당하는것.
- 값을 재할당 할수 없어서 변수의 값을 변경할수 없다면 그것은 상수Constant라고 한다.
- 여기서 이전의 값 80의 메모리 공간을 지우고 그 메모리 공간에 90의 값을 재할당 하는것이 아니라, 새로운 메모리 공간을 확보하고 그 공간에 90의 값을 저장한다. 이때 기존의 값들은 가비지 콜렉터 에 의해서 자동 해제 된다.
가비지 콜렉터 garbage collector
가비지 콜렉터는 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 사용되지 않는 메모리를 해제하는 기능 이다. 이를 통해 메모리 누수를 방지한다.
4-7. 식별자 네이밍 규칙
식별자는 어떠한 값을 구별해서 식별해낼수 있는 고유한 이름 이다.
- 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있다.
- 단, 식별자는 특수문자를 제외한 문자, 언더스코어(_), 달러 기호($)로 시작해야 하며, 숫자로 시작하는 것은 허용하지 않는다.
- 예약어는 식별자로 사용할 수 없다.
예약어 -> 프로그래밍 언어에서 사용되고 있거나 사용될 예정인 단어
네이밍 컨벤션은 하나 이상의 영어 단어로 구성된 식별자를 만들 때 가독성 좋게 하기 위한 명명 규칙
var firstName; //카멜 케이스(camelCase)로 변수나 함수의 이름 명명에 사용 var first_name; //스네이크 케이스(snake_case) var FirstName; //파스칼 케이스(PascalCase)로 생성자 함수, 클래스의 이름 명명에 사용 //헝가리언 케이스(typeHungarianCase) var strFirstName; // type + indentifier var $elem = document.getElementById('myId'); // DOM노드 var observable$ = fromEvent(document, 'click'); // RxJS 옵저버블
'JAVA Script > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[ 6장 ] 데이터 타입 (0) | 2022.04.12 |
---|---|
[ 5장 ] 표현식과 문 (0) | 2022.04.12 |
[ 3장 ] 자바스크립트 개발 환경과 실행 방법 (0) | 2022.04.09 |
[ 2장 ] 자바스크립트란? (0) | 2022.04.09 |
[ 1장 ] 프로그래밍 (0) | 2022.04.09 |
댓글