[모던자바스크립트] 4장 - 변수

Yongwoo Cho·2021년 11월 22일
0

TIL

목록 보기
24/98
post-thumbnail
post-custom-banner

변수란?

하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙힌 이름으로 값의 위치를 가리키는 상징적인 이름이다

  • 변수 할당(assignment)
    변수에 값을 저장하는 것으로 대입, 저장이라고도 불린다
  • 변수 참조(reference)
    변수에 저장된 값을 읽어 들이는 것

변수 선언

변수 선언이란 변수를 생성하는 것을 말한다. 자세히는 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다.

❗ 변수를 사용하려면 반드시 변수 선언이 필요하다.

변수를 선언한 이후, 변수에 값을 할당하지 않았을 때 어떻게 될까?
👉 변수 선언에 의해 확보된 메모리 공간은 비어 있을 것으로 생각할 수 있으나, 확보된 메모리 공간에는 자바스크립트 엔진에 의해 undefined값이 암묵적으로 할당되어 초기화된다.

메모리를 자동으로 할당한다고 했는데, undefined는 메모리를 얼마나 차지할까?
👉 알 수 없다. 값이 할당되었을 때 자료형에 맞게 메모리가 할당된다.

변수 호이스팅

console.log(x); // undefined

var x; // 변수 선언문
  • 예상하는 결과
    자바스크립트는 인터프리터 언어이다. 따라서 한줄씩 순차적으로 실행되므로 변수선언 전에 console.log를 통해 x에 접근하려고 하기 때문에 에러가 발생할 것으로 예상된다.
  • 실행되는 결과
    에러가 발생하지 않고 undefined가 출력된다.

💡 이유는 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 런타임 이전 단계에서 먼저 실행되기 때문이다.

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

❌ 하지만 변수 호이스팅은 자바스크립트의 장점이 아닌 특징으로 이렇게 사용하지 말자 !!

garbage collector

애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말한다. 더 이상 사용되지 않는 메모리란 간단히 말하자면 어떤 식별자도 참조하지 않는 메모리 공간을 의미한다. 자바스크립트는 garbage collector을 통해 메모리 누수를 방지한다.

식별자란?

어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다. 값이 아니라 값이 저장되어 있는 메모리 주소를 기억해야 한다.

❗ 식별자라는 용어는 변수 이름에만 국한해서 사용하지는 않는다

💡 변수,함수,클래스 등의 이름은 모두 식별자다. 즉, 메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자라고 부른다.

❌ 선언하지 않은 식별자에 접근하면 ReferenceError(참조 에러)가 발생

profile
Frontend 개발자입니다 😎
post-custom-banner

0개의 댓글