자바스크립트에서 어렵다고 생각하는 개념이 hoisting 입니다.
function abc() { var a = 'bbb'; console.log(a) // ---- 1 function c() { console.log(a); // --- 2 (function() { console.log(a); // --- 3 a = 'ccc'; })(); var a; console.log(a) // ---4 } function d() { console.log(a); // --- 5 // var a = 3; } c(); a = 'ddd'; d(); };