๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ์ for๋ฌธ์ ์ข ๋ฅ์ ๋ํ ๊ธ์ ์ ๋ฆฌํ๋ ์ด์ ๋ ํ์ฌ ๋์ค์ ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ค๋นํ๋ฉด์ for๋ฌธ์ ์์ฑํ ๋๊ฐ ๋ง์๋ฐ, ๊ณต๋ถ๋ฅผ ํ๋ฉด์ for๋ฌธ์ ์ข ๋ฅ๊ฐ ๋ค์ํ๊ฒ ์๋ ๊ฑด ์์์ง๋ง ์ค์ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ ๊ฐ ์์ฃผ ์ฌ์ฉํ for๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ for๋ฌธ๊ณผ forEach๋ฌธ๋ง ์์ฃผ ์ฌ์ฉํ์๊ณ , ๊ทธ ์ธ์๋ ๊ฑฐ์ ํ ๋ฒ๋ ์ฌ์ฉํด ๋ณธ ์ ์ด ์์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ค์ํ for๋ฌธ๊ณผ ์ ์ด ํด๋ณด๋ฉด์ ๊ฐ๊ฐ์ ์ํฉ์ ๋ฐ๋ผ ๊ฐ for๋ฌธ๋ง๋ค ์ฅ์ ์ด ์๊ณ , ์ฑ๋ฅ์ ์ฐจ์ด๋ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธฐํ์ ํ์คํ๊ฒ ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ๊ฐ๋จํ๊ฒ ์ด๋ค ์ญํ ์ ํ๋ ์ ๋์ธ์ง์ ๋ํด์ ์ ๋ฆฌํ๋ค.
๐ก ์์๋ณผ ๊ฒ๋ค
- (์ ํ์ ์ธ) for
- for in
- for of
- forEach
1. for
์ฒซ๋ฒ์งธ๋ก ์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ for๋ฌธ์ด๋ค.
์ด๋ค ํน์ ํ ์กฐ๊ฑด์ด ๊ฑฐ์ง(false)์ด ๋ ๋๊น์ง ๋ฐ๋ณต๋ฌธ์ ์ํํ๊ฒ ๋๋ค.
for๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
for ([์ด๊ธฐ๋ฌธ]; [์กฐ๊ฑด๋ฌธ]; [์ฆ๊ฐ๋ฌธ]) {์ํํ ๊ฒ}
[์ด๊ธฐ๋ฌธ] ๋ถ๋ถ์์ ์ด๊ธฐํ ๊ตฌ๋ฌธ์ธ ์ด๊ธฐ๋ฌธ์ด ์กด์ฌํ๋ค๋ฉด ์ด๊ธฐ๋ฌธ์ด ์คํ๋๋ค.
์ด ํํ์ ๋ณดํต 1์ด๋ ๋ฐ๋ณต๋ฌธ ์นด์ดํฐ๋ก ์ด๊ธฐ ์ค์ ์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณต์กํ ๊ตฌ๋ฌธ์ผ๋ก ํํ๋ ๋๋ ์์ต๋๋ค. ๋ํ ๋ณ์๋ก ์ ์ธ๋๊ธฐ๋ ํ๋ค.
[์กฐ๊ฑด๋ฌธ] ๋ถ๋ถ์์๋ ์กฐ๊ฑด๋ฌธ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ค.
๋ง์ฝ ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(true)์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ๊ณ์ ์คํ๋๊ณ , ๊ฑฐ์ง์ด๋ผ๋ฉด for ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ฒ ๋๋ค. ๋ง์ฝ ๊ทธ ์กฐ๊ฑด๋ฌธ์ด ์๋ต๋๋ค๋ฉด, ๊ทธ ์กฐ๊ฑด๋ฌธ์ ์ฐธ์ผ๋ก ์ถ์ ๋๋ค.
[์ฆ๊ฐ๋ฌธ] ๋ถ๋ถ์์๋ ์ด๊ธฐ๋ฌธ์์ ์์ฑํ ์นด์ดํฐ๊ฐ for๋ฌธ์ด ๋ฐ๋ณต๋ ๋๋ง๋ค ์ฆ๊ฐํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ํ์ํฌ ์ฝ๋๋ฅผ { } ๋๊ดํธ๋ฅผ ์์ฑํด์ ๊ทธ ์์ ์์ฑํ๋ฉด { } ๋๊ดํธ ์์ ์์ฑํ ์ฝ๋๋ค์ด ๋ฐ๋ณต๋ฌธ์ ํตํด ์คํ๋๋ค.
์ฅ์ :
1. ๊ฐ์ฅ ๋น ๋ฅด๋ค.
2. ๋ชจ๋ ์๋ฃํ์ ๋ํด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
3. ๋ฐ๋ณต๋ฌธ ๊ฑด๋๋ฐ๊ธฐ(continue), ์ข ๋ฃ(break)๊ฐ ๊ฐ๋ฅํ๋ค.
4. ๋ณ์ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์์:
for (let i = 0; i < 10; i++) {
console.log(i);
}
//์ถ๋ ฅ ๊ฒฐ๊ณผ 0 1 2 3 4 5 6 7 8 9
์์ธํ ๋งํฌ:
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for</a ></span >
2. for...in
for in ๋ฌธ์ ํน์ง์ ๊ฐ์ฒด์ ์ด๊ฑฐ ์์ฑ์ ํตํด ์ง์ ๋ ๋ณ์๋ฅผ ๋ฐ๋ณตํ๋ค.
์ฆ, ๊ฐ์ฒด์ ์ ๊ทผํด์ ๊ฐ์ฒด์ ๊ฐ๋ค์ for in ๋ฌธ์ผ๋ก ํตํด ํ์ฉํ ์ ์๋ค.
๊ฐ๊ฐ์ ๊ณ ์ ํ ์์ฑ์ ๋ํด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ง์ ๋ ์ํ๋ฌธ์ ์คํํ๋ค.
์ฅ์ :
1. ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
2. ๊ฐ์ฒด์ ์ฝ๊ฒ ์ ๊ทผํ์ฌ ๋ฐ๋ณต๋ฌธ์ ์ํํ ์ ์๋ค.
3. ๋ฐ</span >๋ณต๋ฌธ ๊ฑด๋๋ฐ๊ธฐ(continue), ์ข ๋ฃ(break)๊ฐ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ๊ฐ์ฒด์ ์ ๊ทผํด์ผ ํ๋ ๋งํผ for ๋ฐ๋ณต๋ฌธ๋ค ์ค ์ฑ๋ฅ ์ธก๋ฉด์์ ์ ์ผ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ข์ง ๋ชปํ๋ค.
๊ทธ๋์ ๋๋ ์ฌ๋งํ๋ฉด for..in๋ฌธ์ ํน์ ํ ์ํฉ์ด ์๋๋ฉด ํผํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.
for ( ๋ณ์ in ๊ฐ์ฒด ) {์ํํ ๊ฒ๋ค}
์์ ๊ฐ์ด for in๋ฌธ์ '๊ฐ์ฒด'๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ์์ฑํ '๋ณ์'์๋ ๊ฐ์ฒด์ ๊ฐ์ด ํ๋ํ๋ ๋ฝํ์ '๋ณ์'์ ๊ฐ์ฒด์ key๊ฐ์ด ๋ด์์ง๋ฉด์ ๊ฐ์ฒด ์์ ๋ค์ด์๋ ๋ฐ์ดํฐ๋งํผ ๋ฐ๋ณต๋ฌธ์ ์ํํ๊ฒ ๋๋ค.</span >
์์:
const obj = {
a: 1,
b: 2,
c: 3
};
for (let i in obj) {
console.log(i, obj[i]);
}
//์ถ๋ ฅ๊ฒฐ๊ณผ a 1, b 2, c 3
์์ธํ ๋งํฌ:
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...in</a ></span >
3. for...of
for of ๋ฐ๋ณต๋ฌธ์ ES6์ ์ถ๊ฐ๋ ์๋ก์ด ๋ฐ๋ณต๋ฌธ์ด๋ค.
๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(๋ฐฐ์ด, ๋ฌธ์์ด, Map, Set, ๋ฑ ํฌํจ)๋ฅผ ํตํด ๋ฐ๋ณต๋ฌธ์ ๋ง๋ ๋ค.
์ฅ์ :
1. ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋ํด ๊ฐ๊ฒฐํ๊ฒ ๋ฐ๋ณต๋ฌธ ์์ฑ ๊ฐ๋ฅํ๋ค.
2. ์ฑ๋ฅ๋ฉด์์๋ ์ค์ํ๋ค.
3. ๋ฐ๋ณต๋ฌธ ๊ฑด๋๋ฐ๊ธฐ(continue), ์ข ๋ฃ(break)๊ฐ ๊ฐ๋ฅํ๋ค.
for (๋ณ์ of ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด) {์ํํ ๊ฒ}
์๋ฅผ ๋ค์ด '๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด'์ ๋ฌธ์์ด์ ์ ๋ ฅํด๋ ๋ฌธ์์ด์ ํ๋ํ๋ ๊บผ๋ด์ ๋ฐ๋ณต๋ฌธ์ ์ํํ ์ ์๋ค.
์์:
const str = 'hello';
for (let s of str) {
console.log(s);
}
//์ถ๋ ฅ๊ฒฐ๊ณผ: h, e, l, l, o
์์ ๊ฐ์ด ๊ฐ๊ฒฐํ๊ฒ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฝ๋ฉ ํ ์คํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ฌธ์์ด ๋น๊ต ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด for of๋ฌธ์ ์์ฃผ ํ์ฉํ๋ค.</span >
์์ธํ ๋งํฌ:
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...of</a ></span >
4. forEach
ES5๋ฌธ๋ฒ์ธ forEach() ๋ฉ์๋๋ค.
์ฃผ์ด์ง ํจ์๋ฅผ ๋ฐฐ์ด ์์ ๊ฐ๊ฐ์ ๋ํด ์คํํ๊ฒ ๋๋ค.
์ฅ์ :
1. ์ฝ๋๊ฐ ํ๋์ ๋ณด๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํ๋ค.
2. ์ฑ๋ฅ ์ธก๋ฉด์์๋ ๋งค์ฐ ์ค์ํ๋ค.
3. ์ฌ๋ฌ ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํ์ฉ๋๊ฐ ๋๋ค.
๋ค๋ฅธ for ๋ฐ๋ณต๋ฌธ๋ณด๋ค ์์ฑํ๊ธฐ๋ ์ฝ๊ณ ์ฝ๋๊ฐ ํ๋์ ๋ค์ด์์ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ forEach๋ฌธ์ ํน์ ํ ์ํฉ์ด ์๋ ์ด์ ์ฌ๋งํ๋ฉด ์ ๊ฐ ์ ๋ง ์์ฃผ ์ ์ฉํ๋ ๋ฉ์๋์ ๋๋ค.
ํ์ง๋ง ๊ฑด๋๋ฐ๊ธฐ(continue), ์ข ๋ฃ(break)๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฐ๋ณต๋ฌธ์ ์ํํ๋ ์์ฃผ ๊ฐ๋จํ ์์๋ค.
์์:
const array = [1,2,3,4,5]
array.forEach(item => console.log(item));
//์ถ๋ ฅ๊ฒฐ๊ณผ: 1, 2, 3, 4, 5
๋ฑํ ๋ค๋ฅธ ์ค๋ช ์ด ์์ด๋ ๋ฐ๋ก ๋์ ๋ค์ด์ค์ง ์๋์?
์์ธํ ๋ด์ฉ:
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach</a ></span >
๐ ๋ง๋ฌด๋ฆฌ
๋ง๋ฌด๋ฆฌ๋ฅผ ์ง์ผ๋ฉด์, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ๋ณต๋ฌธ์ ๋ํ ๋ฒค์น๋งํน ํ ์คํธ ์ฌ์ดํธ์ด๋ค.
๊ฐ for๋ฌธ์ ๋ํด์ ์ธ๋ถ์ ์ผ๋ก ์ ๋ฆฌํ์ง ์์์ง๋ง ๋๋ต ์ด๋ค ์ญํ ์ ํ๊ณ ์ด๋ค ์ํฉ์ ์ฌ์ฉ์ ํ๋ฉด ์ข์ ์ง์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด ๋ณด์๋ค.
์ด๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฝ๋ฉ ํ ์คํธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ํ์์ ์ ํ์ง ์์๋ for๋ฌธ๋ค์ ๊ฐ๊ฐ ์ฌ์ฉํด ๋ณด๋ฉด์ ๊ฐ for๋ฌธ๋ค์ด ์ด๋ค ์ญํ ๋ค์ ํ๋์ง์ ๋ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์ด์ผ๊ฒ ๊ตฌ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ํญ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ด์ฉ ๊ฒ์ ๊ด๋ จํด์๋ MDN ๊ณต์ ๋ฌธ์๋ฅผ ์ ์ผ ๋จผ์ ์ฐธ๊ณ ํ๋ ๊ฒ ๋์์ด ๋๋ ๊ฒ ๊ฐ๋ค.