WEB/JS
[JS] variable_hoisting
우와왕고기다
2023. 11. 18. 17:15
호이스팅(hoisting)
호이스팅 : 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
console.log(score);
var score;
인터프리터에 의해 console.log가 먼저 실행되고 순차적으로 다음 줄에 있는 코드를 실행한다.
그래서 위의 코드는 참조에러가 발생한 것처럼 보이지만 자바스크립트 엔진은 변수 선언이 소스코드가 어디에 있는 상관없이 다른 코드보다 먼저 실행한다. 그래서 undefined가 출력이 된다.
값의 할당
console.log(temp);
var temp = 1000;
console.log(temp);
변수 선언은 소스코드가 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 런타임에 실행이된다.
이 때 할당된 메모리공간에 값을 채우는 것이 아니라 새로운 메모리 공간을 확보해서 할당을 한다.
이러면 undefined가 선언된 메모리의 낭비를 방지하기 위해서 가비치 컬랙터에 의해 자동으로 삭제된다.