클로저 문제에 대한 var와 let의 차이점(왜 5 5 5 5) 같은 부분 setTimeout()함수가 task Queue에 들어간 다음 call stack에 있는 for문이 끝나면 call stack에 들어와서 실행을 하는데 이때 클로저를 이용하여 i를 참조합니다. 1. var인 경우 var는 함수형 스코프로 setTimeout()함수가 call stack에 들어와서 실행 할 때 상위 스코프에게 i값을 물어보면 i값은 이미 5값이 되어 있어서 5 5 5 5 5와 같이 출력이 됩니다. const nums = [0, 1, 2, 3, 4]; for (var i = 0; i < nums.length; i++) { setTimeout(function () { console.log(`${i}`); }, i * 1..
Hoisting 함수 내에 있는 선언들을 모두 끌어올려 사용 var 변수 선언, 함수 선언문만 해당 설명 기본적인 Hoisting 선언 부분만 맨 위로 올라가서 수행됩니다. //hoisting //var b; undefined로 3은 hoisting 되지 않는다. //function a(){ console.log('a');}; a(); function a() { console.log('a'); }; console.log(b); var b = 3; 함수 Hoisting 주의 1. 함수 표현식은 Hoisting 안된다. 2. 함수와 변수 선언문 중에 함수 선언문이 먼저다. //1. fun(); var fun = function() {}; //2. fun(); var fun = function(){}; //s..