안녕하세요 클로저의 응용 수업 관련하여 질문 드립니다
222
작성한 질문수 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
35
1
강의 교안은 따로 없을까요?
0
230
1
배열관련 질문드립니다.
0
359
2
제발 도와주세요
-4
942
1
괄호 질문
0
439
1
new 를 안 붙이는 경우 (섹션19)
0
365
1
무한루프
1
1229
1
혹시 교재는 따로 없을까요?
0
696
0
선생님과 접점을 찾았어요.
0
467
0
new 생성자
0
273
0
sample파일에서 질문있습니다.
3
431
1
password == '111111'
0
526
1
배열
0
294
1
toUpperCase() 에 대해서 질문입니다.
0
261
0
강의를 들으면서 비쥬얼스튜디오 코드를 사용하여도 상관 없을까요?
0
641
2
\'와 변수를 같이 쓰면 안 되나요?
0
354
2
왜 에러가 났는지
0
367
1
첫번째 for문에서 i값 5가 5번 출력 되는 이유
0
526
3
name이 뭐죠
0
291
1
첫번째 예시문에서 값이 왜 5가 5번 반복되는지 궁금합니다.
0
722
3
grades 객체에 key값 show의 function을 지정하는 지점에서 오류가 발생합니다.
0
309
1
function오류
0
402
1
객체 출력차이(document.write, console.log)
0
322
0
자바스크립트에서 함수가 아닌 곳에서 정의된 변수
0
202
0





