호이스팅(hoisting)
매우 간단하다. 함수 선언부가 유효범위 최상단으로 끌어올려지는 현상!
함수표현일땐 불가능.
예제를 출력하면 당연하게도 typeerror발생!
이유는? 더블함수가 실행할때는 더블함수가 만들어지지않아서
(자바스크립트는 기본적으로 위에서 아래로 실행되기때문에)
const a = 7
double()
const double = function () {
console.log(a * 2)
}
예제) 함수선언일땐 가능
const a = 7
double()
function double() {
console.log(a * 2)
}
함수선언은 밑에다가 작성을해도 호출이 가능하다.
언제 유용할까? 복잡한 로직을 사용할때, 복잡한 코드를 위에서 아래로 읽어내려갈때,
더블함수가 어디에서 실행되는지 찾기전에 많은 로직을 거쳐야하기때문에 해석하기가 좋지않다.
그래서 우리는 호이스팅이라는 개념을 사용하여 최상단으로 끌어올린다.
호이스팅이은 변수를 선언하고 선언한 변수가 최상단으로 끌어올려지는 현상을 말한다.
함수 선언식에서만 일어난다. (이름이 있는 함수)
const, let에서도 호이스팅은 발생한다. 하지만 우리 눈에는 보이지 않게 ‘참조에러를’ 띄워준다.
'개발이야기 > JS' 카테고리의 다른 글
[JS] 콜백 (0) | 2022.02.15 |
---|---|
[JS] 타이머 함수 (0) | 2022.02.15 |
[JS] 즉시실행함수 (0) | 2022.02.15 |
[JS] 화살표 함수 (0) | 2022.02.15 |
[JS] 함수 (간략하게 정리) (0) | 2022.02.15 |