[JavaScript] 딥다이브 / 4장 변수

ungnam·2023년 6월 13일
0
post-thumbnail

4.1 변수란 무엇인가? 왜 필요한가?

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

변수를 사용하게 되면 개발자가 직접 메모리 주소에 접근할 필요 없이 상징적인 이름을 통해 값을 참조할 수 있다. 변수에 저장된 값의 의미를 파악할 수 있는 변수 이름을 통해 가독성을 높이는 부수적인 효과도 가져올 수 있다.

4.2 식별자

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

예를 들어,
var result = 30 에서
식별자 result는 값 30을 식별할 수 있으며,
이를 위해서는 값을 기억하는 것이 아닌 값이 저장된 메모리 주소를 기억해야 함을 의미한다.

4.3 변수 선언

변수를 사용하기 전 선언은 반드시 필요하며(선언하지 않을 시 ReferenceError 발생), var, let, const 키워드를 이용한다.

키워드: JS 엔진이 수행할 동작을 규정한 일종의 명령어

var score;
-> var 키워드에 의해 변수 이름을 등록하고 값을 저장할 메모리 공간을 확보
-> 아직 변수에 값이 할당되지 않음 -> undefined라는 값이 암묵적으로 할당되어 초기화됨

var 키워드를 사용한 변수 선언의 경우 선언 단계초기화 단계가 동시에 이루어지며, 초기화 단계의 경우 확보한 메모리 공간에 이전에 사용했던 값이 남아있게 되는 경우 문제가 생기기 때문에 반드시 거쳐야 한다.

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

  • 변수 선언은 런타임이 아닌 그 이전 단계에서 먼저 실행됨
  • 이렇게 변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작되는 현상을 변수 호이스팅이라고 한다.

4.5 값의 할당

  • 변수 선언과는 달리, 값의 할당은 소스코드가 한 줄씩 순차적으로 실행되는 시점인 런타임에 실행됨
  • 값의 할당 시 이전 undefined가 저장된 메모리 공간을 지우고 새로 할당하는 것이 아닌, 새로운 메모리 공간을 확보해서 할당된 값을 저장한다.

4.6 값의 재할당

  • 마찬가지로 이전 값이 저장된 메모리 공간을 지우지 않고 새로운 메모리 공간을 확보하여 할당된 값을 저장함
  • 어떠한 식별자도 참고하지 않는 메모리 공간은 가비지 콜렉터에 의해 자동으로 해제(release)됨

4.7 식별자 네이밍 규칙

  • 특문을 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함
  • 문자, 언더스코어(_), 달러 기호($)로 시작되어야 하며, 숫자는 허용되지 않음
  • 예약어는 식별자로 사용할 수 없음
profile
꾸준함을 잃지 말자.

0개의 댓글