KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

할당(assignmet)

연결된 노트와 함께 읽기

할당(assignmet)

2024년 11월 23일
  • 변수(Variable)에 값을 할당(대입, 저장)할 때는 할당 연산자 =를 사용한다.
  • 할당 연산자는 우변의 값을 좌변에 변수에 할당한다.

변수 선언과 값의 할당 시점

  • 변수 선언과 값의 할당의 실행 시점이 다르다.
  • 변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임(runtime) 이전에 먼저 실행되지만, 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.
JavaScript
  • 위의 예시로 변수 선언은 런타임 이전에 실행되고 값의 할당은 런타임에 실행된다.
JavaScript
  • 변수 선언과 값의 할당을 하나의 문(statement)로 단축 표한할 수 있으므로 첫번째 예시는 두번째 예시와 동일하게 동작한다.
  • 변수 선언과 값의 할당을 하나의 문장으로 단축 표현해도 자바스크립트 엔진은 변수의 선언과 값의 할당을 2개의 문으로 나누어 각각 실행한다. 따라서 변수에 undefined가 할당되어 초기화되는 것은 변함이 없다.

-> 이 과정에서 주의해야될 점은 이전 값 undefined에 저장되어 있는 메모리 공간을 지우고 그 메모리 공간에 80의 값을 새롭게 저장하는 것이 아니라, 새로운 메모리 공간으 확보하고 그곳에 할당 값 80을 저장한다는 점에 주의해야 한다.

var 값의 재할당

  • var 키워드로 선언한 변수는 재할당(이미 값이 할당되어 있는 변수에 새로운 값을 다시 할당하는 것)을 할 수 있다.
JavaScript
  • var키워드로 선언한 변수는 선언과 동시에 undefined로 초기화되기 때문에 엄밀히 말하면 벼순에 처음 값으로 할당하는 것도 사실 재할당이다.

  • 재할당은 변수에 저장된 값을 다른 값으로 변경한다.

  • 만약 값을 재할당할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수(constant)이다.

  1. 변수에 값을 재할당 하면 score의 값은 80에서 90으로 변경된다.
  2. 처음 값을 할당했을 때와 마찬가지로 이전 값 80이 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 재할당 값 90을 새롭게 저장하는 것이 아니라 새로운 메모리 공간을 확보하고 그 메모리 공간에 숫자 값 90을 저장한다.
  3. 따라서 undefined와 80은 어떠한 JavaScript/식별자(Identifier)와도 연결되어 있지 않기 때문에 이러한 불필요한 값들은 가비지 콜렉터(garbage collector)에 의해 메모리에서 자동 해제된다.

Synapse Map Insight

console.log(score); // undefined var score; // 변수 선언 score = 80; // 값의 할당 console.log(score); // 80
console.log(score); // undefined var score = 80; console.log(score); // 80
var score = 80; // 변수 선언과 값의 할당 score = 90; // 값의 재할당