개발/javascript
변수 호이스팅
마루쨩
2023. 9. 10. 23:47
"변수 호이스팅"
console.log(score); // undefined
var score = 10;
변수를 선언도 하기 전 참조를 하면 참조에러가 나올 것 같지만
undefined라는 값이 나온다. 이러한 현상을 변수 호이스팅이라고 한다.
호이스팅이란 얘기는 끌어올린다는 얘긴데 흡사 변수의 선언문이 끌어올려진 것처럼 동작한다고 해서 변수의 호이스팅이라고 한다.
자바스크립트 엔진이 자바스크립트를 실행할 때 동기적으로 실행되지만 코드 안에 있는 선언문만을 먼저 실행한다.
var score = 10; // 이 문은
var score; // 변수 선언문
score = 10; // 변수 할당문을 합친 것
console.log(score); // undefinde
var score;
score = 10;
세 줄의 자바스크립트 코드를 실행할 때 변수선언문인 2번 라인을 먼저 실행하게 됨.
1번 라인이 실행될 때에는 벌써 변수가 선언된 상태이다.
그러면 왜 10이 나오지 않고 undefined가 나오냐면 변수 할당문이 아닌 변수 선언문만 먼저 실행되기 때문이다.
할당문은 한 줄 한 줄 자바스크립트가 실행될 때 실행되기 때문이다.
var score;
console.log(score); // undefined
score = 10;
그래서 이런 식으로 실행된 것처럼 동작한다.
이것도 let이나 const와 var키워드 사이의 다른 점이다.
var키워드로 선언한 변수는 호이스팅 하지만 let이나 const로 선언한 변수는 변수 호이스팅이 되지 않는 것처럼 동작한다.