Javascript Study

모던자바스크립트 Deep Dive - 4장(변수)

짤진이 2024. 2. 8. 08:04
반응형
var score;

console.log(score); //undefined

 

선언 후 초기화 => 변수를 사용하려면 항상 선언이 필요하다.

선언하지 않은 식별자에 접근하면 ReferenceError(참조에러) 발생한다.

 

console.log(score);

var score; //undefined

 

변수 선언은 런타임 이전에 먼저 실행한 후 평가과정이 끝난 후 선언문을 제외한 소스코드를 실행한다.

변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라고 한다.

 

var value = 80;

변수선언을 한 문장으로 단축해도 선언, 할당 등 두가지로 나누어진다.

주의할 점으로 할당과 선언은 실행되는 시점이 다르다.

 

console.log(newScore);

var newScore = 80;

console.log(newScore); //undefined , 80

 

값을 할당하기 전에 이미 변수는 선언되었고 줄의 console에서는 선언되었지만 할당되지않은 newScore 값이 저장되었고 3번쨰 코드에서는 값이 할당된 80 출력된다.

 

console.log(score2);

score2 = 100;

var score2;

console.log(score2); //undefined, 100

 

var을 사용하면 재할당이 가능하다. 사실 처음에 선언하면 undefined로 초기화되기 떄문에 처음에 값을 할당하는 것도 재할당이다.

undefined => 80 으로 재할당될 때 다른 메모리에 저장, 80 => 90 으로 재할당하면 다시 다른 메모리에 저장한다.

재할당 후 남은 undefined, 80은 더이상 필요하지 않으므로 가비지 콜렉터에 의해 삭제되지만 그 시기는 알 수 없다.

자바스크립트는 가비지 콜렉터를 내장하고 있는 managed 언어로서 가비지 콜렉터를 통해 메모리 누수를 방지한다.

 

var first-name //특수문자 -가 사용되었음
var 1st //숫자가 가장 먼저 옴
var this //예약어
반응형