[Javascript] 호이스팅

2021. 7. 3. 12:30·Javascript

호이스팅

- var 선언문, function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성

- 변수 선언 단계와 초기화 단계가 할당 단계와 분리되어 진행되기 대문에 호이스팅이 발생한다.

변수 호이스팅

- var 키워드 변수 생성과정 -

1. 선언 단계 : 변수 객체에 var 키워드로 선언된 변수를 등록한다. 이 변수 객체는 스코프 참조 대상이 된다.
2. 초기화 단계 : 변수 객체에 등록된 var 키워드 변수를 메모리에 할당한다. var 키워드 변수값은 undefined로 초기화 된다.
3. 할당 단계 : 초기화 단계에서 undefined로 초기화된 값을 실제값으로 할당한다.

var 키워드 변수 호이스팅 예제

    // var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어진다.
    // 즉 (1)보다 먼저 scope에 변수가 등록되고 
    // 변수는 메모리 공간을 확보한 후 undefined로 초기화된다.
    
    // var a; // 호이스팅
    console.log(a); // (1) undefined
    var a = 10; // (2)
    console.log(a) // (3) 10

함수 호이스팅

- 함수 선언문 호이스팅 O

- 함수 표현식 호이스팅 X

    // testA : 함수 선언문
    // testB : 함수 표현식
    
    testA(2) // 2
    testB(4) // testB is not a function
    
    function testA(num) {
        console.log(num)
    }
    var testB = function (num) {
        console.log(num)
    }
    
    testB(4) // 4

'Javascript' 카테고리의 다른 글

[Javascript] 스코프(Scope)  (0) 2021.07.08
[Javascript] 프로토타입(Prototype)  (0) 2021.07.07
[Javascript] 함수(function)  (0) 2021.06.30
[Javascript] 객체와 변경불가성(Immutability)  (0) 2021.06.22
[Javascript] 객체  (0) 2021.06.21
'Javascript' 카테고리의 다른 글
  • [Javascript] 스코프(Scope)
  • [Javascript] 프로토타입(Prototype)
  • [Javascript] 함수(function)
  • [Javascript] 객체와 변경불가성(Immutability)
꾸준2
꾸준2
  • 꾸준2
    꾸준2
    꾸준2
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 복습 프로젝트 (3)
      • 어드민 프로젝트 (4)
      • 프로젝트 리팩토링 (4)
      • Database (0)
      • Java Library (2)
      • Java (4)
      • Java(JVM) (1)
      • 자바 문제 (13)
        • 이론 (6)
        • 실습 (7)
      • IDE (2)
        • IntelliJ (2)
      • 인강 (13)
        • SpringBoot(JPA활용1) (0)
        • 자바(기본편) (6)
        • 자바(중급1편) (3)
        • 자바(중급2편) (1)
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편 (3)
      • Network (2)
      • Node (3)
      • CS (0)
      • amCharts4 (5)
      • 오류 모음 (4)
        • 리눅스 (1)
      • 기타지식 (2)
      • 자주 사용하는 기능 (4)
      • Vue (11)
      • Javascript (13)
      • Javascript-메서드 (3)
      • CSS (6)
      • 라이브러리 (4)
      • 자료구조 (11)
      • 알고리즘 (4)
      • Vue-프로젝트 (20)
      • Vue-bitcoin프로젝트 (6)
      • 블로그클론 프로젝트 (11)
      • 면접 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
꾸준2
[Javascript] 호이스팅
상단으로

티스토리툴바