const
, let
: 블록레벨(변수가 선언되어있는 그 범위의 중괄호) 유효 범위를 가진다.**var
**: 함수레벨 유효 범위를 가진다. : 함수 선언부
가 유효범위 최상단으로 끌어올려지는 현상
📍 함수 표현문의 호이스팅 : 변수 호이스팅
const a = 7; <here> const double = function(){ console.log(a*2); } double ();
➡️ double();
이 <here>
자리에 위치한다면?
함수 호이스팅이 아닌 변수 호이스팅이 발생하여 error가 뜬다.
📍 함수 선언문의 호이스팅 : 함수 호이스팅
const a = 7; <here> function double (){ console.log(a*2); } double ();
➡️ double();
이 <here>
자리에 위치한다면?
함수 호이스팅이 발생하여 14가 반환된다.