์๋ ํ์ธ์, ์ฌ๋ฌ๋ถ!
Eric ์ ๋๋ค!
์ค๋์ JavaScript์์ ์ฌ์ฉ๋๋ for ๋ฌธ์ ๋ํด ์์๋ณด๊ณ ,
์ด๋ฅผ ํ์ฉํ๊ธฐ ์ํด ์์ฃผ ์ฌ์ฉ๋๋ enumerable๊ณผ iterable ๊ฐ๋ ์ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค.
1๏ธโฃ for ๋ฌธ
๋จผ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ for ๋ฌธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด for ๋ฌธ์ ์ด๊ธฐ์, ์กฐ๊ฑด์, ์ฆ๊ฐ์์ ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ๋ฒ์์ ๋ฐ๋ณต์ ์ฒ๋ฆฌํฉ๋๋ค.
์์:
for (let i = 0; i < 5; i++) {
console.log(i);
}
2๏ธโฃ for...in ๋ฌธ
for...in ๋ฌธ์ ๊ฐ์ฒด์ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ(enumerable) ์์ฑ์ ๋ํด ๋ฐ๋ณต ์์ ์ ์ํํฉ๋๋ค.
์ด ๋, ๋ฐฐ์ด์ด๋ ๋ค๋ฅธ ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable) ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์:
const person = {
name: "Eric",
age: 30,
job: "๊ฐ๋ฐ์"
};
for (const key in person) {
console.log(`${key}: ${person[key]}`);
}
3๏ธโฃ for...of ๋ฌธ
for...of ๋ฌธ์ ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable) ๊ฐ์ฒด์ ์์๋ค์ ์ํํ๋ฉฐ ์์ ์ ์ํํฉ๋๋ค.
๋ฐฐ์ด, ๋ฌธ์์ด, Set, Map ๋ฑ์ iterable ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์:
const fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "๋ธ๊ธฐ"];
for (const fruit of fruits) {
console.log(fruit);
}
4๏ธโฃ forEach ๋ฉ์๋
Array์ forEach ๋ฉ์๋๋ ๋ฐฐ์ด ์์๋ฅผ ์ํํ๋ฉฐ ์ฃผ์ด์ง ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํฉ๋๋ค.
์ด ๋ฉ์๋๋ Array์ ํ๋กํ ํ์ ์ ์ ์๋์ด ์์ต๋๋ค.
์์:
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function (number) {
console.log(number);
});
์ด์ ์์์ ์ธ๊ธํ enumerable๊ณผ iterable ๊ฐ๋ ์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
โ Enumerable:
๊ฐ์ฒด์ ์์ฑ์ด ์ด๊ฑฐ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
์ด๋ ์์ฑ์ด for...in ๋ฌธ์์ ๋ฐ๋ณต๋๊ฑฐ๋ Object.keys()์ ๊ฐ์ ๋ฉ์๋๋ก ํ์๋ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
โ Iterable:
๊ฐ์ฒด๊ฐ ๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ for...of ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์์๋ฅผ ๋ฐ๋ณตํ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ด ๋ธ๋ก๊ทธ ๊ธ์ ํตํด JavaScript์ ๋ค์ํ for ๋ฌธ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ enumerable, iterable ๊ฐ๋ ์ ๋ํด ์์๋ณด์์ต๋๋ค.
์ด๋ฅผ ํ์ฉํ์ฌ ์ฌ๋ฌ๋ถ์ ์ฝ๋ ์์ฑ์ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.