안녕하세요 클로저의 응용 수업 관련하여 질문 드립니다
217
작성한 질문수 35
for (var i = 0 ; i < 5 ; i++) {
arr[i] = function () {
return i;
}
부분에서 궁금한 점이 있습니다
3번째 줄의 i는 for문의 i를 왜 받지 못하나요?
for문의 i는 전역변수이고, 함수 안의 i를 리턴하기 위해선, 컴퓨터가 전역변수 i의 값을 찾고, 받아야 한다고 생각했습니다.
어떠한 부분을 제가 잘못 생각하고 있는 건지, 도움 주시면 감사하겠습니다.
답변 1
2
클로저 강의를 듣고 저도 비슷한 고민을 했었기에 제가 이해했던 걸 적어드립니다.
3번째 줄의 i는 for문의 i를 받고 있는게 맞습니다.
강의를 보면 저 for문 작성 이후에 arr[0]~arr[4]를 출력을 하는데 모두 5가 나오죠?
i값이 5이기 때문입니다. (i는 for문에서 5회 반복되었습니다.)
작성자님은 아마 for문을 보면서
arr[0] = function(){return 0;}
arr[1] = function(){return 1;}
arr[2] = function(){return 2;}
arr[3] = function(){return 3;}
arr[4] = function(){return 4;}
를 기대하셨을것 같은데
arr[0] = function(){return i;}
arr[1] = function(){return i;}
arr[2] = function(){return i;}
arr[3] = function(){return i;}
arr[4] = function(){return i;}
이렇게 이해하는게 맞는 것 같습니다.
왜 이렇게 되는지 생각해 봤는데
arr[i]처럼 배열 인덱스에서는 i가 가진 정수 값이 들어가고
return i; 일때는 i라는 변수 그 자체, 주소값이 리턴되어서 그런것 같습니다.
강의 교안은 따로 없을까요?
0
207
1
배열관련 질문드립니다.
0
345
2
제발 도와주세요
-4
928
1
괄호 질문
0
423
1
new 를 안 붙이는 경우 (섹션19)
0
355
1
무한루프
1
1210
1
혹시 교재는 따로 없을까요?
0
685
0
선생님과 접점을 찾았어요.
0
456
0
new 생성자
0
262
0
sample파일에서 질문있습니다.
3
418
1
password == '111111'
0
510
1
배열
0
281
1
toUpperCase() 에 대해서 질문입니다.
0
251
0
강의를 들으면서 비쥬얼스튜디오 코드를 사용하여도 상관 없을까요?
0
623
2
\'와 변수를 같이 쓰면 안 되나요?
0
336
2
왜 에러가 났는지
0
352
1
첫번째 for문에서 i값 5가 5번 출력 되는 이유
0
502
3
name이 뭐죠
0
275
1
첫번째 예시문에서 값이 왜 5가 5번 반복되는지 궁금합니다.
0
700
3
grades 객체에 key값 show의 function을 지정하는 지점에서 오류가 발생합니다.
0
295
1
function오류
0
392
1
객체 출력차이(document.write, console.log)
0
313
0
자바스크립트에서 함수가 아닌 곳에서 정의된 변수
0
190
0
동일한 이름의 전역변수 선언이 가능한가요
1
742
1





