변수는 데이터를 담기 위한 메모리 공간을 의미합니다.
쉽게 생각하면, 어떤 값을 담기 위한 상자나 그릇이라고 비유할 수 있습니다.
// num이 변수이다.
const num = 2;
//객체나 배열같은 구조를 사용하면 여러개의 값을 저장할 수 있다.
const user = {id : 1, name:"jhon"};
const users = [
{id : 1 , name: 'jhon'},
{id : 2 , name: 'hun'}
];
선언되지 않은 변수를 읽으려고 하면 참조 오류가 발생합니다.
변수를 선언하지 않고 사용하는 행위는 버그의 원인이 될 수 있으니, 반드시 선언하고 사용하는 것이 좋습니다.
변수를 어디에 선언했는지 간에, 파일의 가장 위쪽에 올라가서 글로벌 변수로 처리되는 것을 호이스팅이라고 합니다.
변수 선언과 동시에 값을 할당(저장)하는 것을 초기화라고 한다.
const num = 10;
const키워드는 상수이므로 값을 재할당할 수는 없지만, let, var는 변수이므로 값을 재할당 할 수있다.
var num = 80;
num = 90;
여기서 80에서 90으로 값이 바뀌는 것이 아니라 새로운 메모리공간을 확보해서 90을 저장한다. 즉, 메모리에 80도 남아있고 90이 저장된 메모리도 있다는 것이다. 80은 이제 필요없는 값이므로 가비지콜렉터를 통해 메모리에서 자동해제된다. 단, 메모리에서 언제 해제될지는 알 수가 없다.
애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말한다.