[JavaScript] JavaScript 함수 - 호이스팅

2022. 9. 23. 17:12·🍞 FrontEnd/JavaScript

- 호이스팅(Hoisting)이란?

자바스크립트 문법에서 변수나 함수를 선언 이전에 사용할 수 있다는 뜻이다. 실제로 코드가 끌어올려지는 것은 아니며, 자바스크립트 Parser 내부적으로 끌어올려서 처리하기 때문에 실제 메모리에서는 변화가 없다.

 

📌 함수 표현식

 원래 자바스크립트는 위에서부터 아래로 해석되어 읽혀진다. 그래서 아래 사진처럼 함수가 호출되는 부분을 윗부분으로 옮기게 되면 아직 함수가 만들어졌지 않았기 때문에 콘솔에 오류가 떠 실행이 불가능하다. 함수표현식은 함수선언문과 달리 선언과 호출 순서에 따라서 정상적으로 함수가 실행되지 않을 수 있다. 변수에 할당된 함수표현식은 끌어 올려지지 않기 때문에 이때는 변수의 스코프 규칙을 그대로 따른다.

함수 표현식

 

📌 함수 선언문

그러나 함수 표현식이 아닌 함수 선언문이면 호이스팅이 발생해서 가능해진다.

호이스팅은 함수선언문과 함수표현식에서 서로 다르게 동작하기 때문에 주의해야 한다. 함수선언문은 코드를 구현한 위치와 관계없이 자바스크립트의 특징인 호이스팅에 따라 브라우저가 자바스크립트를 해석할 때 맨 위로 끌어 올려진다.

 

함수를 밑에서 선언한다면 해석하기가 좋지 않고 가독성이 떨어진다. 호이스팅 현상을 이용해 함수 이름만 보고도 대략적으로 로직을 유추해볼 수 있기 때문에 이러한 방법을 많이 사용하게 된다. 

함수 선언문

 

 

[JavaScript] 호이스팅(Hoisting)이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

저작자표시 (새창열림)

'🍞 FrontEnd > JavaScript' 카테고리의 다른 글

[JavaScript] JavaScript 클래스 - this  (0) 2022.09.23
[JavaScript] JavaScript 클래스 - 생성자 함수(prototype)  (2) 2022.09.23
[JavaScript] JavaScript 함수 - 콜백(Callback)  (0) 2022.09.23
[JavaScript] JavaScript 함수 - 타이머 함수  (2) 2022.09.23
[JavaScript] JavaScript 함수 - 화살표 함수  (0) 2022.09.23
'🍞 FrontEnd/JavaScript' 카테고리의 다른 글
  • [JavaScript] JavaScript 클래스 - 생성자 함수(prototype)
  • [JavaScript] JavaScript 함수 - 콜백(Callback)
  • [JavaScript] JavaScript 함수 - 타이머 함수
  • [JavaScript] JavaScript 함수 - 화살표 함수
박빵이
박빵이
2025년에도 갓생살기
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (337)
      • 🍞 FrontEnd (97)
        • HTML+CSS (4)
        • JavaScript (17)
        • TypeScript (4)
        • React (52)
        • Next.js (2)
        • Android (15)
      • 🍞 BackEnd (24)
        • Java (15)
        • Node.js (6)
        • Spring (1)
      • 🍞 Cloud & Infra (0)
        • AWS SAA (0)
        • Microsoft Azure (0)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 데이터 통신 (6)
        • 네트워크 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • 길벗 블로깅 멘토 (18)
        • IT연합동아리 피로그래밍 (3)
        • 개발 컨퍼런스 (2)
  • 블로그 메뉴

    • Admin
  • 링크

    • GitHub
  • 인기 글

  • 태그

    Java
    길벗 블로깅 멘토링
    level2
    알고리즘
    map
    코틀린
    umc
    백준
    C++
    위상정렬
    유니온파인드
    길벗 블로깅 멘토
    react
    JavaScript
    Front
    프로그래머스
    Android
    level1
    코딩자율학습
    안드로이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박빵이
[JavaScript] JavaScript 함수 - 호이스팅
상단으로

티스토리툴바