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

함수 표현식 vs 함수 선언식

<aside> 💡 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것. var 변수 선언과 함수선언문에서만 호이스팅이 일어난다.

</aside>

변수의 경우

Quick Tip: How to Declare Variables in JavaScript - SitePoint

Declaration, initialization, assignment의 세 단계가 있다.

자바스크립트에서 선언과 초기화는 거의 동시에 일어나는데, 변수를 선언하게 되면 자바스크립트는 이 변수를 위한 메모리 공간을 만든다. 그리고 초기값을 undefined로 초기화해 준다.

선언 및 초기화 Declaration

var coffee;

console.log(coffee); //undefined

할당 Assignment

var coffee = "커피콩물"

console.log(coffee) //커피콩물

undefined와 null

undefined : 변수가 선언되었고 초기화도 되었지만 아직 할당되지 않은 상태

null : 할당까지 끝난 상태. 일부러 null 값을 변수에 할당해준 것이다.

var 변수

스코프 단위 지역변수.

호이스팅 시 선언과 초기화를 동시에 진행한다.

<aside> 💡 선언 전에 var 변수에 접근하는 것이 가능하다. 호이스팅 때문.

</aside>