클로저
Closure
for(var i = 0; i < 100; i++) {
setTimeout(function() {
console.log(i);//i를 찾는다. 죽었다 깨나도 1번째 줄의 i가 된다.
},i * 1000);
}//100만 나온다.
---------------------------------------------------------------------
//반복문을 쓰지 않았을 때
setTimeout(function() {
console.log(i);//log(1) log(2) log(3) log(4) log(5)라고 예상하지만
}, 0*1000);//0초를 의미한다. 하지만 바로 실행되는 것을 의미하지 않는다.
setTimeout(function() {
console.log(i);
}, 1*1000);//1초 뒤에 실행된다. 그제서야 i를 찾는다. 그 사이 for문은 반복문을 다 돈다.
setTimeout(function() {
console.log(i);
}, 2*1000);
setTimeout(function() {
console.log(i);
}, 3*1000);
setTimeout(function() {
console.log(i);
}, 4*1000);
setTimeout(function() {
console.log(i);
}, 5*1000);
setTimeout(function() {
console.log(i);
}, 99*1000);Last updated