const iterable = [1, 2, 3, 4, 5]; // 배열을 예시로 사용

for (const item of iterable) {
    console.log(item);
}
console에서 출력된 모습
for (variable of iterable) {
    // 반복할 코드
}
const arr = ["apple", "banana", "cherry"];
for (const fruit of arr) {
    console.log(fruit);
}
// 출력: "apple" "banana" "cherry"
const str = "abc";
for (const char of str) {
    console.log(char);
}
// 출력: "a" "b" "c"
const map = new Map([["key1", "value1"], ["key2", "value2"]]);
for (const [key, value] of map) {
    console.log(key, value);
}
// 출력: "key1 value1" "key2 value2"
const set = new Set([1, 2, 3]);
for (const value of set) {
    console.log(value);
}
// 출력: 1 2 3
<ul>
    <li>김밥</li>
    <li>라면</li>
    <li>떡볶이</li>
</ul>
const liElements = document.getElementsByTagName("li"); // li 태그를 모두 선택
console.log(liElements); // HTMLCollection(3) [li, li, li]

/* for...of 문 적용 */
for (const liElement of liElements) {
    console.log(liElement.textContent);
}
// 출력: "김밥" "라면" "떡볶이"
<ul>
    <li>김밥</li>
    <li>라면</li>
    <li>떡볶이</li>
</ul>
const liElements = document.querySelectorAll("li"); // li 선택자를 모두 선택
console.log(liElements); // NodeList(3) [li, li, li]

/* for...of 문 적용 */
for (const liElement of liElements) {
    console.log(liElement.textContent);
}
// 출력: "김밥" "라면" "떡볶이"
function showArgs() {
    for (const arg of arguments) {
        console.log(arg);
    }
}

showArgs(10, 20, 30);
// 출력: 10 20 30
/* break 예제: 3 이상이면 반복 종료 */
const numbers = [1, 2, 3, 4, 5];

for (const num of numbers) {
    if (num >= 3) break;
    console.log(num);
}
// 출력: 1 2

/* continue 예제: 3인 경우 건너뛰기 */
for (const num of numbers) {
    if (num === 3) continue;
    console.log(num);
}
// 출력: 1 2 4 5
const numbers = [10, 20, 30];

// 값만 순회
for (const value of numbers) {
  console.log(value); // 10, 20, 30
}
const obj = {
    a: 1,
    b: 2
}

// 오류 발생!
for (const value of obj) {
  console.log(value);
}
// TypeError: obj is not iterable
const obj = {
    a: 1,
    b: 2
}

// 키 순회
for (const key of Object.keys(obj)) {
  console.log(key); // a, b
}

// 값 순회
for (const value of Object.values(obj)) {
  console.log(value); // 1, 2
}

// 키와 값 모두 순회
for (const [key, value] of Object.entries(obj)) {
  console.log(key, value); // a 1, b 2
}