web_seul 2022. 12. 2. 20:33

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

//변수는 하나의 값 저장을 위한 메커니즘이나 배열과 객체 같은 자료구조를 사용하면 여러개의 값을 그룹화해서 사용가능
var userId = 1;
var userName = 'Lee';

//객체
var user = { id:1, name: 'Lee'}

//배열
var users = [
  {id: 1, name: 'Lee'},
  {id: 2, name: 'Kim'}
];

 

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

변수선언 : 변수를 생성하는 것, 값을 저장하기 위한 메모리 공간을 확보하고 변수이름과 확보된 메모리 공간의 주소를 연결하여 값을 저장가능하게 준비하는 것

//JS 변수 선언
var score;	//1. 변수 선언 2. 변수 초기화 (undefined)
score = 80;	//3. 값 할당

* undefined : JS에서 제공하는 원시타입의 값

 

변수 호이스팅 : JS엔진은 런타임(소스코드가 한 줄씩 순차적으로 실행되는 시점)이전 소스코드 평가과정에서 모든 선언문을 먼저 실행하고 평가과정이 끝나면 순차적으로 실행함, 변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작하는 JS고유의 특징

console.log(score);	//*referenceError가 아닌 undefined 출력, 변수 호이스팅

var score;	//변수선언
score = 80;	//값 할당
 
console.log(score);	//80 *값의 할당은 런타임에 실행됨

 

//생각해보기
console.log(score);	//undefined
 
score=80;
var score;

console.log(score);	//80
	                //소스코드 평가과정과 런타임을 모두 지났기 때문에..?

 

변수의 재할당 : 기존값이 저장된 메모리공간에 값을 재할당하는 것이 아닌 새로운 값을 저장할 메모리공간을 새롭게 확보, 기존의 불필요한 값들은 가비지 콜렉터에 의해 메모리에서 자동해제

* 가비지 콜렉터 : 메모리공간을 주기적으로 검사하여 더이상 사용되지 않는 메모리를 해제하는 가능, 메모리 누수 방지

 

반응형