
 a = 2;
 var a;
 console.log(a);
 ① 오류가 발생한다.
② 정상적으로 실행되고 undefined가 출력된다.
③ 정상적으로 실행되고 2가 출력된다.
var a = 2;를 하게 되면 JavaScript는 아래와 같이 동작한다.
var a = 'g';
function fn(){
	console.log(a);	// ①
    var a = 'l';
    console.log(a);    // ②
}
fn();
① undefined
② l
fn 함수안의 var a = 'l'의 선언 부분이 함수 내부의 최상위로 호이스팅 되기 때문에 ①의 값은 undefined가 출력이 된다.
그 뒤, 변수a에 l이라는 값을 넣은 뒤, a를 출력을 하게 되는데 이때의 a(②)는 l을 출력하게 된다.
function abc() {
	var a = ‘bbb’;
	console.log(a)     					 // ---- ①
	function c() {
		console.log(a);    				 // ---- ②
		(function() {
			console.log(a);    			 // ---- ③ 
			a = ‘ccc’;
		})();
		var a;
		console.log(a) 	  		  	 // ---- ④
	}
	function d() {
		console.log(a);    			 	// ---- ⑤
	}
	c();
	a = ‘ddd’;
	d();
};
abc();
Hoisting의 동작 원리
① bbb
② undefined
③ undefined
④ ccc
⑤ ddd
해당 포스팅은 썬한 코딩, 입사에 필요한 JS기술의 내용을 보며 공부한 것을 정리한 내용입니다.