JavaScript

변수 호이스팅(Hoisting)

2021. 6. 23. 01:12
목차
  1. 호이스팅에 대해 알아보자
반응형

호이스팅에 대해 알아보자

 

console.log(score);  // undefined

var score;  // 변수 선언문

위 코드블럭을 보면 선언하기 전에 변수를 console.log에 담았으니 ReferenceError(참조에러) 가 발생할 것처럼 보인다.

하지만 에러 없이 "undefined"가 출력된다.

 

그 이유는 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임(runtime)이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.

 

 

자바스크립트 엔진은 소스코드를 한 줄씩 순차적으로 실행하기 앞서(runtime 이전) 먼저 소스코드의 평가과정을 거치면서 소스코드를 실행하기 위한 준비를 한다.

 

이때 소스코드 실행을 위한 준비 단계인 소스코드의 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문(변수 선언문, 함수 선언문 등)을 소스코드에서 찾아내 먼저 실행한다.

 

 

그리고 평가 과정이 끝나면 비로소 변수 선언을 포함한 모든 선언문을 제외하고 한 줄씩 순차적으로 실행한다.

 

이처럼 변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작하는 자바스크립트 고유의 특징을

 

✔️변수 호이스팅(variable hoisting)이라 한다.

 

 

+

변수 선언뿐 아니라 var, let const, function, function*, class 키워드를 사용해서 선언하는 모든 식별자(변수, 함수, 클래스 등)는 호이스팅 된다.

모든 선언문은 런타임 이전 단계에서 먼저 실행되기 때문이다.
반응형

'JavaScript' 카테고리의 다른 글

자바스크립트 코드 스니펫 20개(from. 링크드인)  (1) 2023.06.21
Javascript - Scope(유효범위)  (0) 2021.08.03
버튼 클릭시 눌린 버튼 상태 변화(Javascript)  (1) 2021.05.02
눈누 무료폰트 프로젝트에 적용하기  (1) 2021.04.26
  1. 호이스팅에 대해 알아보자
'JavaScript' 카테고리의 다른 글
  • 자바스크립트 코드 스니펫 20개(from. 링크드인)
  • Javascript - Scope(유효범위)
  • 버튼 클릭시 눌린 버튼 상태 변화(Javascript)
  • 눈누 무료폰트 프로젝트에 적용하기
개발하길잘햇다
개발하길잘햇다
개발이 재밌더라구요
개발하길잘햇다
Joo.soft
개발하길잘햇다
전체
오늘
어제
  • 분류 전체보기 (84)
    • 회고록 (23)
    • 프로젝트 (9)
    • JavaScript (5)
    • TypeScript (1)
    • React (3)
    • Python (9)
    • Cloud (1)
      • AWS (1)
    • Algorithm (8)
    • 독후감 (1)
    • Data Science (4)
    • 쉐도잉 (12)
    • 특별한 일상 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로젝트
  • 1011번
  • 쉐도잉
  • 백준
  • 미니프로젝트
  • Til
  • 알고리즘
  • Python
  • be supposed to
  • 클론코딩
  • Javascript
  • 토이프로젝트
  • Nextjs
  • 프로그래머스
  • react
  • 항해99
  • gh-pages
  • WIL
  • TypeScript
  • DeepDive
  • 리액트
  • 모던자바스크립트
  • 파이썬
  • GoogleColab
  • frontend
  • pandas
  • Sleepwell
  • velog
  • 자바스크립트
  • 소셜로그인

최근 댓글

최근 글

hELLO · Designed By 정상우.
개발하길잘햇다
변수 호이스팅(Hoisting)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.