변수의 선언
을 변수 범위 맨위로 끌어오는 현상
변수를 만나면 선언부분
을 강제로 맨위로 끌어올림
그래서 함수 선언식을 아래에 작성하고 위에서 함수를 호출해도 실행된다.
// ex
showAge();
function showAge(){
console.log(26);
}
// ex)
var a; // 선언만 했지만 hoisting으로 a는 undefined값으로 초기화됨
// let, const도 Hoisting 일어난다.
// ex)
let age = 30;
function showAge( ){
// 가까운 곳에서 부터 age를 찾기 때문에 전역에 선언된 age가 아닌 스코프 안에 age를 가리킴
console.log(age); // console.log(age)가 출력되지 않고 age를 먼저 초기화하라고 에러뜸.
let age = 20; // hoisting이 일어남. hoisting이 일어나지 않았다면 console.log(age)에서 전역변수 age값인 30이 출력되었을 것이다.
}
showAge( );
var
함수 스코프
let, const
블록 스코프(함수, if문, for문, while문, try/catch문 등등)