KassyLog

[모던 자바스크립트]'변수' 알아보기! 본문

javascript

[모던 자바스크립트]'변수' 알아보기!

Kassy_kim 2022. 11. 26. 13:12

 

# 변수

변수는 '하나의 값을 저장하기 위해 확보한  메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해붙인 이름'을 말한다.

쉽게 말해 값의 위치를 가리키는 상징적인 이름!

변수 이름은 사람이 이해할 수 있는 언어로 그 이름을 통해 변수에 저장된 값의 의미를 명확히 할 수 있다.

 

코드는 컴퓨터에게 내리는 명령이지만 개발자를 위한 문서이다. 개발자의 의도를 나타내는 명확한 네이밍은 코드를 이해하기 쉽게 만들고,

이는 협업과 품질 향상에 도움을 주기때문이 심사숙고해서 지어야 한다.

 

변수이름을 식별자(어떤 값을 구별해서 식별할 수 있는 고유한 이름) 라고도 한다. 

메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자라고 부른다.

# 변수 선언

변수를 선언하려면 반드시 선언이 필요하다. 여기서 대망의 var, let, const 키워드를 사용한다.

ES6가 도입되기 전까지는 자바스크립트에서 유일하게 변수를 선언할 수 있는 키워드는 var 뿐이었다.

var 키워드의 단점 중 가장 대표적인 것
- 블록 레벨 스코프를 지원하지 않고 함수레벨 스코프를 지원한다는 것!
- 따라서 이로 인해 의도치 않게 전역 변수가 선언되어 심각한 부작용이 발생되기도 한다.

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

 var abc;
-> 선언과 초기화를 동시에 진행해서 undefined를 할당해서 초기화 됨
var 키워드로 선언한 변수는 어떠한 값을 할당하지 않아도 undefned라는 값을 갖는다!!!!

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

 자바스크립트 엔진은 변수 선언이 소스코드의 어디에 있든 상관없이 다른 코드보다 먼저 실행한다.

 따라서 변수 선언이 소스코드의 어디에 위치하는지와 상관없이 어디서든지 변수를 참조할 수 있다.

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

의 경우 참조에러가 일어나지 않고 변수 선언이 소스코드가 순차적으로 실행되는 런타임 이전단계에서 먼저 실행된다는 증거가 된다.

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

# 값의 재할당

var score = 80;
score = 90;

이처럼 var 키웓로 선언한 변수는 값을 재할당할 수 있다. 재할당은 현재 변수에 저장된 값을 버리고 새로운 값을 저장한다.

var 키워드로 선언한 변수는 선언과 동시에 undefined로 초기화 되기 때문이다!

만약 값을 재할당할 수 없다면? 저장된 값을 변경할 수 없다면? 그건 변수가 아니라 상수다!

다시 말해 상수는 단 한 번만 할당할 수 있는 변수다 (const의 등장!)

 

# 식별자 네이밍 규칙

식별자는 다시 말해 어떤 값을 구별해낼 수 있는 고유한 이름을 말한다.

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

 규칙2) 숫자로 시작하는 것은 허용하지 않는다.  

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