[자바스크립트 Deep Dive] 04장. 변수

lemythe423·2023년 6월 18일
0

변수

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

여러 개의 값을 저장하는 방법

// 일반적으로 변수는 하나의 값을 저장하기 위한 수단
var userId = 1
// 객체 & 배열을 사용하면 여러 개의 값을 하나의 값처럼 사용 가능
var user = { id: 1, name: 'Lee' }

식별자

  • 변수 이름 = 식별자
  • 어떤 값을 구별해서 식별할 수 있는 고유한 이름
  • 값이 아니라 메모리 주소를 기억함

변수 선언 & 호이스팅

  • 변수 선언을 위한 키워드 : var, let, const

변수의 이름이 등록되는 곳은?

  • 실행 컨텍스트(execution context) : JS 엔진이 소스코드를 평가 & 실행하기 위해 필요한 환경을 제공하고 코드 결과를 실제 관리하는 영역

var 키워드를 사용한 변수 선언

var score; // 선언 단계
// var = undefined 초기화 단계(암묵적으로 이루어짐)
  • 선언 : 변수의 이름을 등록하는 것
  • 초기화 : 변수가 선언된 이후 최초로 값을 할당하는 것

호이스팅

console.log(score) // undefined
var score; 

일반적으로 코드는 인터프리터에 한줄씩 실행되므로 차례대로 실행된다면 score가 출력되는 시점에 변수 score는 아직 정의되어 있지 않으므로 참조 에러가 발생해야 하지만

변수 선언은 소스코드가 실행되는 시점(runtime)이 아닌 그 이전 단계에서 먼저 실행되기 때문에 에러가 발생하지 않는ㄴ다

가비지 콜렉터

  • 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능
  • 어떤 식별자로 참조하지 않는 메모리 공간
  • 이를 통해 메모리 누수(memory leak)을 방지
profile
아무말이나하기

0개의 댓글