> 기초/Javascript

TIL-2024.02.18 - JS - 변수 - 1. 변수 원리

Janku 2024. 2. 18. 21:08

 

 

 

------- 변수? 

 

의미: 

변수란 하나의 값을 저장하기 위해 확보한 메모리 공간을 식별하기 위해 붙인 이름.

 

> 하나의 값을 저장하기 위해 확보한 메모리 공간 ?? 

  • 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장 (아래의 사진같이)
  • 저장된 값을 사용하기 위해 변수라는 메카니즘을 통해 불러옴

 

 

 

 

 

선언(declaration), 초기화 (Initialization), 할당 (assignment), 참조 (reference)

  1. 선언: 값을 저장하기 위한 메모리 공간을 확보(allocate)하고 변수 이름과 확보된 메모리 공간의 주소를 연결 (name binding)해서 값을 저장할 수 있게 준비  > 변수를 생성
  2. 초기화: 주로 선언과 초기화가 같이 발생하는데, 변수 선언에 의해 확보된 메모리 공간은 JS 엔진에 의해 undefined라는 값으로 암묵적으로 할당되어 초기화 > 처음으로 값을 할당하는 과정
  3. 할당: 이미 선언된 변수에 할당
  4. 참조: 수의 값을 사용하는 것

 

 

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

console.log(score) // undefined

var score;

 

  • console이 실행되는 시점에는 아직 변수가 선언되기 이전이므로 Reference Error가 발생해야 하지만, undefined 발생
  • 변수 선언이 소스코드가 순차적으로 실행되는 런타임 이전 단계에서 먼저 실행됨
  • 이처럼, 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작 > 호이스팅 > 추후 작업 예정

 

선언과 할당 타이밍

  • 변수의 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행
  • 변수의 값할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행

 

재할당:

  • 재할당은 값을 기존 위치에 저장하는 것이 아니라, 새로운 메모리 공간을 확보하고, 그 메모리 공간에 할당
  • 더 이상 활용하지 않은 값들은 가비지 콜렉터에 의해 메모리에서 자동 해제