개발자가 직접 메모리 주소를 통해 값을 저장 및 참조할 필요 없이 변수를 통해 안전하게 값에 접근 가능하다.
변수이름 : 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름 (=result)
변수 값 : 변수에 저장된 값 (=30)
var result = 10 + 20;
할당 : 변수에 값을 저장하는 것
참조 : 변수에 저장된 값을 읽어들이는 것
식별자는 값이 저장되어 있는 메모리 주소를 기억하고 있다.
변수를 선언할 땐 var
, let
, const
키워드를 사용한다.
변수를 선언한 후 할당을 하지않으면 undefined라는 값이 암묵적 할당되어 초기화된다
선언하지 않은 식별자에 접근하면 ReferenceError(참조에러) 발생
console.log(score); //undefined
var score;
undefined
가 출력된 이유는?
변수호이스팅 : 변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작하는 것
변수에 값을 할당할 때는 할당연산자 =를 사용
var score = 80; //변수 선언과 값의 할당
변수에 값을 할당할 때는 이전 값 undefined가 저장되어 있던 메모리 공간을 지우는 것이 아니라 새로운 메모리 공간을 확보하고 그곳에 할당 값 80을 저장한다!
console.log(score); //undefined
score = 80;
var score;
console.log(score); //80
재할당 : 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것
var score = 80; //변수 선언과 값의 할당
score = 90; //값의 재할당
상수에는 값을 재할당할 수 없다!
80이라는 값은 불필요하기 때문에 가비시 콜렉터에 의해 메모리에서 자동 해제