var funcs = [];
// 함수의 배열을 생성하는 for 루프의 i는 전역 변수다.
for (var i = 0; i < 3; i++) {
funcs.push(function () { console.log(i); });
}
// 배열에서 함수를 꺼내어 호출한다.
for (var j = 0; j < 3; j++) {
funcs[j]();
}
위 코드의 실행 결과로 0, 1, 2를 기대할 수도 있지만 결과는 3이 세 번 출력된다. 그 이유는 for 루프의 var i가 전역 변수이기 때문이다. 0, 1, 2를 출력하려면 아래와 같은 코드가 필요하다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡ
var이 반복문을 통해서 3번 실행되면 funcs 배열에 console.log(0) , console.log(1) , console.log(2) 가 들어가고
아래 반복문을 통해서 호출하면 0 1 2 나오는거 아닌가요 ? 왜 3이 3번 나오나요 ??
코드 깨짐
이유가 본문에 적혀 있는데요?
궁금한건 반복문에서 전역변수이면 어떻게 되는지 궁금해서요
어떤 작동원리로 3이 3번나오는지 ,,
console.log 0 1 2 가 배열에 들어가는게 아니고 console.log i i i 가 들어가는 거죠 나중에 꺼내서 호출할 때 i 를 참조하겠구요