JS/[책] 모던 JS deep dive
4장. 변수
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
//소스코드 평가과정과 런타임을 모두 지났기 때문에..?
변수의 재할당 : 기존값이 저장된 메모리공간에 값을 재할당하는 것이 아닌 새로운 값을 저장할 메모리공간을 새롭게 확보, 기존의 불필요한 값들은 가비지 콜렉터에 의해 메모리에서 자동해제
* 가비지 콜렉터 : 메모리공간을 주기적으로 검사하여 더이상 사용되지 않는 메모리를 해제하는 가능, 메모리 누수 방지
반응형