let i = 0;
while (true) {
if (i === 5) break;
i++;
}
console.log(i);
코드해석: 예제의 반복문은 배운대로라면 while (true)이기 때문에 무한히 반복됩니다. 하지만 여기에 break문이 들어 있다는 점을 주목해야 합니다. i 가 0이고 1씩 증가합니다. 그러다가 i 가 5가 되면 반복문은 종료됩니다.
for (let i = 0; i < 100; i = i + 2) {
console.log(i + 1);
}
코드해석: i는 0이고 i는 100보다 작다. 한마디로 99까지 증가한다는 것, i는 2씩 증가하는데 최종적으로는 +1이 더된다. 그러므로 짝수로 찍히는게 아니라, 홀수가 찍히는 것. 최종적으로는 홀수값들이 나오다가 마지막에 99에서 멈춘다. 맨처음 숫자 1은
console.log (i+1) 의 영향을 받아서 1이 나오는 것.
< 코드 >
let i = 0;
while (i < 10) { // 홀수만 console.log
i++;
if (i % 2 === 0) { // 짝수만
continue;
}
console.log(i);
}
결과 : 1,3,5,7,9 가 나온다.
코드해석 : i++가 되어있지만, continue때문에 2의배수는 건너뛰어서 다음껄로 넘어가라 이런식으로 코드가 해석된다. % 는 나머지를 뜻하고 2를 나머지로 나눠서 0이 되는 즉 짝수를 건너뛰라는 식이 된다.
<팁> 초보일 때는 코드 옆에 꼭 주석을 달아라
< 코드 >
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(i, j);
}
}
// i== 0 j==0 console(0,0);
// i== 0 j==1 console(0,1);
// i== 0 j==2 console(0,2);
// i== 0 j==10, 조건X
// i== 1 j==0 console(1,0);
// i== 1 j==9 console(1,9);
// i== 1 j==10, 조건X
.
.
.
//이게 (9,9) 나올 때까지 계속 반복함.
코드해석: 밖에 것을 먼저 실행 후 -> 안에 것을 모두 다 실행 -> 그 다음 또 밖에 것을 실행한다고 알고 있으면 된다. 이중포문은 밥먹듯이 쓰이는거라 무조건 개념을 알아야한다.
< 코드 >
for (let i = 0; i < 5; i++) {
if (i % 2 === 0) continue;
for (let j = 0; j < 5; j++) {
if (j % 2 === 0) continue;
for (let k = 0; k < 5; k++) {
if (k % 2 === 0) continue;
console.log(i, j, k)
}
}
}
// i==1 j==1 k==1 console.log(1,1,1)
// i==1 j==1 k==2 continue
// i==1 j==1 k==3 console.log(1,1,3)
// i==1 j==1 k==4 continue
// i==1 j==1 k==5 조건X
// i==1 j==2 continue
// i==1 j==3 k==1 console.log(1,3,1)
.
.
.
// 이렇게 (3,3,3)이 나올때까지 반복
제일 안쪽에서부터 돌고 그 다음에 돌고 그다음 제일 밖에가 도는데 밖에가 다 돌면 고정이 되고 다시 맨 안쪽부터 돌게 됨 그래서 나중에 (3,3,3) 이 나온다.
-퀴즈-
구구단을 출력하되, 결과에 짝수가 하나도 나오지 않게 해보세요.continue문을 사용하세요.
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) continue;
for (let j = 0; j < 10; j++) {
if (j % 2 === 0) continue;
console.log(i, j, i * j)
}
}
또는
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i % 2 === 0 || j % 2 === 0) continue;
console.log(i, '*', j, '=', i * j)
}
}
이렇게 표현할 수가 있다.
코드해석: i가 처음으로 돌고 그 다음엔 j가 전부 다 돌게 된다. if (i % 2 === 0 || j % 2 === 0) continue; 라는 식이 나왔으니 2의 나머지 즉 짝수들은 배제가 된다.
즉 1(i++때문에),3,5,7,9라는 숫자들만 남게된다. 이제 남는 숫자들이 밖에가 한번 돌 때 안은 전부 다 돌게 되고 밖이 1이면 안은 1,3,5,7,9가 되고, 밖이 3이면 안은 1,3,5,7,9로 돌게 되어서 1,3,5,7,9단의 홀수만 결괏값으로 나오게 되는 것이다.
중첩 for문으로 만들어보면
for (let i = 1; i < 10; i = i + 2) {
for (let j = 1; j < 10; j = j + 2)
console.log(i, j, i * j)
}
이렇게 만들 수 있다.