for와 while은 ~하는 동안~이라는 의미이므로 반복문에 기호이다
1-1. for문의 기본 구성
for (초기값; 조건식; 증감식) {
}
for 문 예시 1
for (let i = 0; i < 10; i++) {
console.log(i);
}
// 한국말로 풀어쓰면, i라는 변수는 0부터 시작할거야
// i라는 변수가 10에 도달하기 '전'까지 계속할거야
// i라는 변수는 한 사이클이 돌고 다면 1을 더할 거야, 라는 의미이다.
// 실행 결과:
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
for문 예시 2
for (let i = 0; i < 10; i++) {
console.log("For문 돌아가고 있음 =>", i);
}
// 실행 결과:
// For문 돌아가고 있음 => 0
// For문 돌아가고 있음 => 1
// For문 돌아가고 있음 => 2
// For문 돌아가고 있음 => 3
// For문 돌아가고 있음 => 4
// For문 돌아가고 있음 => 5
// For문 돌아가고 있음 => 6
// For문 돌아가고 있음 => 7
// For문 돌아가고 있음 => 8
// For문 돌아가고 있음 => 9
1-2. 배열과 for문은 짝꿍이다.
const arr = ["one", "two", "three", "four", "five"];
for (let i = 0; i < arr.length; i++) { // i는 0이며, 배열 arr의 개수(5)에 도달하기 전까지 반복한다. 한 사이클 돌때마다 i는 1씩 더한다.
console.log(i);
console.log(arr[i]);
};
// 실행 결과
// 0
// one
// 1
// two
// 2
// three
// 3
// four
// 4
// five
예제) 0부터 10까지의 수 중에서 2의 배수만 console.log로 출력하라
for (let i = 0; i < 11; i++) {
if (i >= 2) { // 변수 i가 2보다 크거나 같다면 true
if (i % 2 === 0) { // 변수 i를 2로 나눴을때 나머지가 0이면 true
console.log(i + "는 2의 배수입니다.");
} // if (i % 2 ===) 종료
} // if (i >= 2) 종료
} // for문 종료
// 실행 결과:
// 2는 2의 배수입니다.
// 4는 2의 배수입니다.
// 6는 2의 배수입니다.
// 8는 2의 배수입니다.
// 10는 2의 배수입니다.
1-3. for ~ in문
객체의 속성을 출력하는 문법
let person = {
name: "John",
age: 30,
gender: "male",
};
for (let key in person) { // 객체 person에서 key들을 하나씩 가리킨다.
console.log(key+" : " +person[key]); //person[key]로 key의 값을 조회한다.
}
// 실행 결과:
// name : John
// age : 30
// gender : male
2-1. while 문의 기본 구성
while (조건) {
메인로직
증감
}
while문 예시
let i = 0; // 변수 i의 초기값은 0이다.
while (i < 10) { // 반복문은 변수 i가 10보다 작은 한 계속된다.
console.log("현재 i의 값은", i); // 로그에 현재 변수 i의 값을 출력하고
i++; // 변수 i에 1을 더한다.
} // 다시 while로 돌아가 현재 변수 i가 10보다 작다면 한번 더 로직을 수행한다.
// 실행 결과:
현재 i의 값은 0
현재 i의 값은 1
현재 i의 값은 2
현재 i의 값은 3
현재 i의 값은 4
현재 i의 값은 5
현재 i의 값은 6
현재 i의 값은 7
현재 i의 값은 8
현재 i의 값은 9
예제) while문을 활용하여, 3 초과 100 미만의 숫자 중 5의 배수인 것만을 출력하라
let l = 3;
while (l < 100) {
if (l >= 5) {
if (l % 5 === 0) {
console.log(l + "는 5의 배수입니다.");
}
}
l++;
}
// 실행 결과:
5는 5의 배수입니다.
10는 5의 배수입니다.
15는 5의 배수입니다.
20는 5의 배수입니다.
25는 5의 배수입니다.
30는 5의 배수입니다.
35는 5의 배수입니다.
40는 5의 배수입니다.
45는 5의 배수입니다.
50는 5의 배수입니다.
55는 5의 배수입니다.
60는 5의 배수입니다.
65는 5의 배수입니다.
70는 5의 배수입니다.
75는 5의 배수입니다.
80는 5의 배수입니다.
85는 5의 배수입니다.
90는 5의 배수입니다.
95는 5의 배수입니다.
혹은
if (i % 5 === 0 && i >=5) {
console.log(l+"는 5의 배수입니다.");
} l++; // 로 해도된다.
2-2. do ~ while 코드를 먼저 한번 실행한 후 반복한다.
let x = 0; // 변수 x의 초기값은 0이다.
do {
console.log("현재 x의 값은", x + "입니다."); // 반복문을 수행하기 전에 로직을 수행한다.
x++; // x에 1을 더한다.
} while (x < 10); // 이 작업을 x가 10보다 작다면 계속한다.
// 실행 결과:
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
break 예제) 0부터 10까지 1씩 늘어나는 for문, 하지만 5에서 break가 걸린다.
for (let i = 0; i <= 10; i++) {
if (i === 5) { // 변수 i의 값이 5면 for문 밖으로 나간다.
break;
}
console.log(i + ", 아직 break를 만나지 않았습니다.");
}
// 실행 결과:
// 0, 아직 break를 만나지 않았습니다.
// 1, 아직 break를 만나지 않았습니다.
// 2, 아직 break를 만나지 않았습니다.
// 3, 아직 break를 만나지 않았습니다.
// 4, 아직 break를 만나지 않았습니다.
continue 예제) 0부터 10까지 늘어나는 for문, 하지만 5에서는 로직을 수행하지 않고 넘어간다.
for (let i = 0; i <= 10; i++) {
if (i === 5) {
continue;
}
console.log(i+", 5가 아니므로 작업을 수행합니다.");
}
// 실행 결과:
// 0, 5가 아니므로 작업을 수행합니다.
// 1, 5가 아니므로 작업을 수행합니다.
// 2, 5가 아니므로 작업을 수행합니다.
// 3, 5가 아니므로 작업을 수행합니다.
// 4, 5가 아니므로 작업을 수행합니다.
// 6, 5가 아니므로 작업을 수행합니다.
// 7, 5가 아니므로 작업을 수행합니다.
// 8, 5가 아니므로 작업을 수행합니다.
// 9, 5가 아니므로 작업을 수행합니다.
// 10, 5가 아니므로 작업을 수행합니다.
3-1. break와 continue의 차이점
break: 조건과 일치하면 그 즉시 for문을 종료한다.
continue: 조건과 일치하면 작업을 수행하지 아니하고 다음 순서로 넘어간다.