
#식별자 #키워드 #호이스팅 #값의 할당 #값의 재할당 #네이밍규칙
변수란 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.
- 개발자가 변수의 참조를 요청하면 자바스크립트 엔진은 변수명과 변수명에 매핑된 메모리 주소를 통해 메모리 공간에 접근해 저장된 값을 반환한다.
// 변수 명 : result
// 변수 값 : 10 + 20의 연산결과
// result 변수에 10 + 20 의 연산결과를 '할당'한다.
var result = 10 + 20;
// result 변수의 변수 값을 참조한다.
//30
cosole.log(result);
식별자란 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.
- 변수의 이름은 식별자이다.
- 메모리 상에 존재하는 어떤 값(대표적으로 변수 값, 함수)을 식별할 수 있는 이름을 식별자라고 한다.
- 식별자는 값이 저장되어있는 메모리 공간의 주소와 매핑 되어야하는데 이런 메핑 정보도 메모리에 저장되어야한다.
- 변수명은 실행 컨텍스트에 등록되어 관리된다.
- 식별자는 선언을 통해 자바스크립트 엔진에 식별자의 존재를 알린다.
변수의 선언은 값을 저장하기 위해 메모리 공간을 확보하고 변수의 이름과 확보한 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다.
- 변수를 사용하려면 선언이 필요하다.
- 변수를 선언하기 위해 사용하는 키워드에는 var, let, const 가 있다.
- 선언 하지않은 변수에 접근하면 Refference Error(참조에러)를 유발한다.
키워드는 자바스크립트 엔진이 수행할 동작을 규정한 일종의 명령어로 엔진은 키워드를 만나면 키워드에 규정된 동작을 수행한다.
// var 키워드를 활용한 변수 선언
// 1. 변수의 이름을 등록해 엔진에 변수의 존재를 알린다.
// 2. 메모리 공간을 확보하고 undefined 라는 값을 암묵적으로 할당한다.(초기화)
var score;
변수의 선언은 소스코드가 한 줄씩 실행되는 시점인 런타임의 전 단계인 소스코드의 평가 단계에서 실행된다.
이러한 동작으로 인해 변수 선언문이 마치 선두로 끌어올려진 것 처럼 동작하는 자바스크립트의 특징을 변수 호이스팅이라 한다.
- 소스코드를 실행하기 전 소스코드 평가 과정을 거치면서 변수 선언을 포함한 모든 선언문을 찾아내 먼저 실행한다.
- 평가 과정과 변수/함수의 선언이 끝나면 소스코드를 한줄 씩 순차적으로 실행한다.
//undefined
console.log(score);
var score;
변수에 값을 할당할때는 할당 연산자 = 를 사용한다. 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.
- 변수에 대한 값의 할당은 런타임에 이루어진다.
- 선언과 할당의 실행 시점이 다르다는 것에 주의해야한다.
var score; // 변수의 선언
score = 30; // 변수의 할당
//선언과 할당을 하나의 문으로 표현할 수 있다.
var score = 80;
- 선언과 초기화는 항상 값 할당 보다 먼저 이루어진다
- undefined로 초기화된 변수에 값을 할당할때 undefined가 저장되어있는 공간에 값을 할당하지않고 새로운 메모리 공간을 확보하여 값을 할당한다.
// 2.소스 평가 과정에서 이미 초기화된 변수
console.log(score); // undefined
// 1.소스 평가 과정에서 변수의 선언 및 초기화
var score;
// 3.런타임에 초기화된 변수에 값의 할당
score = 80;
// 4. 할당된 값 참조 & 출력
console.log(score); // 80
값의 재할당 은 이미 값이 할당되어있는 변수에 새로운 값을 또다시 할당하는 것을 말한다.
- 변수의 선언에서 변수의 값이 undefined 로 초기화 되기 때문에 처음 값을 할당하는 것도 엄밀히 말하자면 재할당이다.
- 변수에 값을 재할당 할 수 없다면 이는 변수가 아니라 상수이다.
- 변수값의 할당과 마찬가지로 재할당 또한 기존의 메모리 공간에 값을 다시 할당하는것이 아닌 새로운 매모리 공간을 확보하고 값을 할당한다.
식별자의 네이밍 규칙은 다음과 같다.
- 식별자는 특수문자를 제외한 문자, 숫자 _, $를 포함할 수 있다.
- 식별자는 특수문자를 제외한 문자, _, $로 시작해야한다.
- 키워드는 식별자로 사용될 수 없다.
- 일반적으로 변수명엔 카멜케이스를 사용하고 함수, 객체에는 파스칼 케이스를 사용한다.
#식별자 #키워드 #호이스팅 #값의 할당 #값의 재할당 #네이밍규칙
'프로그래밍 > 자바스크립트 ES6' 카테고리의 다른 글
| 자바스크립트 ES6 #9 타입변환과 단축평가 (0) | 2023.09.12 |
|---|---|
| 자바스크립트 ES6 #8 제어문 (0) | 2023.09.12 |
| 자바스크립트 ES6 #7 연산자 (0) | 2023.09.12 |
| 자바스크립트 ES6 #6 데이터 타입 (0) | 2023.04.06 |
| 자바스크립트 ES6 #5 표현식과 문 (0) | 2023.03.29 |