모던 자바스크립트[변수]

줍줍·2021년 12월 12일
0

스터디

목록 보기
6/7

변수(variable)

변수는 데이터를 담기 위한 메모리 공간을 의미합니다.
쉽게 생각하면, 어떤 값을 담기 위한 상자나 그릇이라고 비유할 수 있습니다.

변수 선언

// num이 변수이다.
const num = 2;
//객체나 배열같은 구조를 사용하면 여러개의 값을 저장할 수 있다.
const user = {id : 1, name:"jhon"};
const users = [
	{id : 1 , name: 'jhon'},
        {id : 2 , name: 'hun'}
  ];

변수 선언시 사용하는 키워드

  1. var : ES6문법 이전에 사용되던 방식으로서, 글로벌 변수로 선언되기 때문에, 프로그램 종료할 때까지 메모리에 남아있게 됩니다. 따라서 지금은 사용하지 않는다.
  2. let : 자바스크립트에서 변수를 저장하는 유일한 키워드다. ES6 문법에서 처음 사용되었다. let은 중괄호 {}로 구성된 코드블럭 안에서 사용되는 경우에는, 코드블럭이 띁나면 메모리가 해제되기 때문에, 메모리 낭비가 일어나지 않습니다.
  3. const : 상수를 저장할 때 사용합니다. 한 번 저장하면, 다른 값으로 바꿀 수 없다.

변수 선언 생략

선언되지 않은 변수를 읽으려고 하면 참조 오류가 발생합니다.
변수를 선언하지 않고 사용하는 행위는 버그의 원인이 될 수 있으니, 반드시 선언하고 사용하는 것이 좋습니다.

호이스팅

변수를 어디에 선언했는지 간에, 파일의 가장 위쪽에 올라가서 글로벌 변수로 처리되는 것을 호이스팅이라고 합니다.

변수 초기화

변수 선언과 동시에 값을 할당(저장)하는 것을 초기화라고 한다.

const num = 10;

const키워드는 상수이므로 값을 재할당할 수는 없지만, let, var는 변수이므로 값을 재할당 할 수있다.

var num = 80;
num = 90;

여기서 80에서 90으로 값이 바뀌는 것이 아니라 새로운 메모리공간을 확보해서 90을 저장한다. 즉, 메모리에 80도 남아있고 90이 저장된 메모리도 있다는 것이다. 80은 이제 필요없는 값이므로 가비지콜렉터를 통해 메모리에서 자동해제된다. 단, 메모리에서 언제 해제될지는 알 수가 없다.

가비지콜렉터란?

애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말한다.

profile
포기하지말자

0개의 댓글