Hoisting

효딩딩·2022년 8월 22일
0

호이스팅 이란 무엇인가?

  • 코드에 선언된 변수 및 함수를 코드의 상단으로 끌어올려서 해당 변수 및 함수 유효 범위의 최상단에 선언하는 것을 말한다.
  • 실제 코드가 끌어올려지는 것은 아니며, 자바스크립트 parser 내부적으로 끌어올려서 처리한다.
  • 실제 메모리에는 변화가 없다.

호이스팅은 var 변수의 선언과 함수선언문에서만 일어난다.

  • 먼저 변수 호이스팅은 변수 선언 및 초기화 시 변수가 속해있는 함수 안에서 최상단으로 올라가는 것이다.
  • let/const 변수 선언 시 호이스팅이 발생하지 않는다.
  • 변수에 할당된 함수표현식은 hoisting을 통해 끌어 올려지지 않으므로, 이 때는 변수의 스코프 규칙을 따른다.

함수선언문과 함수표현식에서의 호이스팅

  • 함수선언문은 코드를 구현한 위치에 관계없이 브라우저가 자바스크립트를 해석할 때 맨 위로 끌어 올려진다.
  • 함수표현식은 선언과 호출 순서에 따라 정상적으로 함수가 실행되지 않을 수 있다. = 함수표현식에서는 선언과 할당의 분리가 발생한다.

출처:
https://hanamon.kr/javascript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85%EC%9D%B4%EB%9E%80-hoisting/
https://velog.io/@ansfls/javascript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85hoisting-%EC%9D%B4%EB%9E%80
https://developer.mozilla.org/ko/docs/Glossary/Hoisting

(영문)

JavaScript Hoisting refers to the process whereby the interpreter appears to move the declaration of functions, variables or classes to the top of their scope, prior to execution of the code.

  • Hoisting allows functions to be safely used in code before they are declared.

  • Variable and class declarations are also hoisted, so they too can be referenced before they are declared. Note that doing so can lead to unexpected errors, and is not generally recommended.

Note: The term hoisting is not used in any normative specification prose prior to ECMAScript® 2015 Language Specification. Hoisting was thought up as a general way of thinking about how execution contexts (specifically the creation and execution phases) work in JavaScript.

Source: https://developer.mozilla.org/en-US/docs/Glossary/Hoisting

profile
어제보다 나은 나의 코딩지식

0개의 댓글