티스토리 뷰
오늘 학원에서 시험에 나온 문제 중 하나 입니다.
function func(){
let i, j = 0;
for( i = 0; i <= 8; i++){
j += i;
}
document.write( j + i );
}
func();
문제의 내용입니다만, 저는 정답이 44라고 생각했는데 45가 정답이었습니다.
for문 안에 들어오는 0부터 8까지 계속 더한 값을 j에 넣어주는것 까지는 이해가 됩니다.
마지막 줄 document.write( j + i ); 에서 0부터 8까지 더한 값 36이 j로 들어가고 for문에서 나온 i가 8까지 진행되어서 i에는 8이 들어가므로 36 + 8 =44 입니다. 가 저의 풀이 였는데요.
정답은 45였고
왜 끝나고 난 뒤 i값에 9가 들어가는지 이해가 어렵습니다.
{
let i = 0;
for(i =0; i<=8; i++){
i;
console.log(i)
}
console.log(i);
}
좀 더 간단하게 만들어서 개념만 보도록 합시다.
콘솔로그에는 0부터 8까지가 들어가고 for문이 끝나고난 뒤 i값에는 9가 들어갑니다.
왜냐하면
for문이 시작되고 for( i<=8;) 조건을 먼저 인식한 후 조건에 맞는 i값을 도출한 후, i++이 실행됩니다.
그렇게 되면 맨위의 전역변수 i가 8이 되었을 때, 조건을 읽고 i=8 이라는 결과를 도출한 후 i++까지 실행됩니다.
그러면 맨위에 전역변수 i 는 8에서 9로 변경됩니다. 전역변수 i가 9가 되고난 뒤 for문을 실행하러 가면 9는 조건에 맞지 않아서 출력되지 않고 for문은 종료됩니다.
여기서 바깥에서 전역변수 i를 불러오면 for 문에 있는 i = 8 이 아니라 맨 위에있는 i=9가 불러와지게 됩니다.
그래서 정답은 44가 아니라 45 입니다.
'Javascript' 카테고리의 다른 글
javascript 수학 메서드 : Math.random() : 0과 1사이의 난수 값을 반환 : 반환(숫자) (0) | 2022.04.15 |
---|---|
This 란? (0) | 2022.04.14 |
카드게임 (0) | 2022.04.14 |
jQuery / javascript 비교. getAttribute와 attr (0) | 2022.04.14 |
javascript - 콜백함수 (0) | 2022.04.13 |
댓글
© 2018 webstoryboy