[JavaScript] 07. ๋ฐ๋ณต๋ฌธ
๐ก 1. ๋ฐ๋ณต๋ฌธ (Loop statement)
- ๋ฐ๋ณต๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ์ฝ๋ ๋ธ๋ก์ ์คํํฉ๋๋ค. ์ด๋ ์กฐ๊ฑด๋ฌธ์ด๋ ๊ฐ์ ๋ณด์ด๋๋ฐ, ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด ๋ ๋๊น์ง ๊ฐ์ ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ๋ณต๋ฌธ์ for๋ฌธ, while๋ฌธ, do... while๋ฌธ, for...in๋ฌธ, for..of๋ฌธ์ด ์์ต๋๋ค. (for...of๋ฌธ์ ์ฐจํ์ ์์ธํ๊ฒ ์ค๋ช ํ๋ ๊ธ์ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค๐ )
๐ก 2. for๋ฌธ
- for๋ฌธ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด ๋ ๋๊น์ง ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
for(์ด๊ธฐํ์; ์กฐ๊ฑด์; ์ฆ๊ฐ์) {
์กฐ๊ฑด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต ์คํ๋ ์ฝ๋ ๋ธ๋ญ
}
// for๋ฌธ ์์
for(let i=0; i < 3; i++) {
console.log(i);
}
// 0
// 1
// 2
์ ์์ ๋ฅผ ์ดํด๋ณด๋ฉด
- for๋ฌธ ์์ ๋ค์ด ์๋ ์ฝ๋๊ฐ ์กฐ๊ฑด์์ด ๋ฉ๋๋ค. ์ด๋ ์ฒซ ๋ถ๋ถ(์ด๊ธฐํ์) "let i=0;"์ด๋ผ๋ ๋ถ๋ถ์ i๋ผ๋ ๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ 0์ด๋ผ๋ ๊ฐ์ ํ ๋นํด์ค๋๋ค.
- ๋ ๋ฒ์งธ "i < 3"๋ ์กฐ๊ฑด์์ผ๋ก์ ๋ณ์ i๊ฐ 3๋ณด๋ค ์์ ๋๊น์ง ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
- ์ธ ๋ฒ์งธ๋ ์ฆ๊ฐ์์ผ๋ก์ ์ฝ๋ ๋ธ๋ก์ ํ๋ฒ ์คํ ํ i์ ๊ฐ์ ์ฆ๊ฐ์ํฌ์ง ๊ฐ์์ํฌ์ง๋ฅผ ์ค์ ํด์ฃผ๋ ๊ณณ์ ๋๋ค.
- ์ฝ๋๊ฐ ์ด๋ค ์์๋ก ์คํ์ด ๋๋์ง ์ค๋ช ํ๊ฒ ์ต๋๋ค.
- 0์ผ๋ก ์ค์ ๋ ๋ณ์ i๊ฐ 3๋ณด๋ค ์์ ์ง๋ฅผ ํ๋จํฉ๋๋ค. 0 < 3์ ์ฐธ์ด๋ฏ๋ก, ์ฝ๋ ๋ธ๋ก ์์ผ๋ก ๋ค์ด๊ฐ๋๋ค.
- ์ฝ๋ ๋ธ๋ก์์ i๋ฅผ ์ฝ์์ ํ์ํ๋ผ๋ ์ฝ๋๊ฐ ์คํ๋๋ฉด์, ์ฝ์์๋ 0์ด ์ฐํ๋๋ค.
- ์ฝ๋ ๋ธ๋ก ์์ ์ฝ๋๊ฐ ๋ชจ๋ ์คํ์ด ๋์์ผ๋ฏ๋ก, ์ฆ๊ฐ์(i++)์ผ๋ก ๊ฐ์ i๋ฅผ ์ฆ๊ฐ์ํฌ์ง ๊ฐ์์ํฌ์ง ํ์ธํฉ๋๋ค.
- ์ฆ๊ฐ์์ด ++์ด๋ฏ๋ก i์ +1์ ํด์ค๋๋ค. (0 +1)
- ๊ทธ๋ผ ๋ค์ ์กฐ๊ฑด์์ผ๋ก ๊ฐ์ i๊ฐ 3๋ณด๋ค ์์์ง ํ๋จํฉ๋๋ค. (์ด๊ธฐํ์์ for๋ฌธ ์ ์ผ ์ฒ์ ํ ๋ฒ๋ง ์คํ๋ฉ๋๋ค.)
- i๋ 1์ด๋ฏ๋ก 1<3์ ์ฐธ์ด ๋ฉ๋๋ค. ๊ทธ๋์ ๋ค์ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ , ์ฝ์์๋ 1์ด ์ฐํ๋๋ค.
- ์ฆ๊ฐ์์์ i + 1 (1 + 1)์ํ์ฌ i๋ 2๊ฐ ๋ฉ๋๋ค.
- ๋ค์ ์กฐ๊ฑด์์ผ๋ก ๊ฐ์ 2<3์ ์ฐธ์ด๋ฏ๋ก ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ ์ฝ์์ 2๊ฐ ์ฐํ๊ณ i๋ +1์ด ๋์ด 3์ด ๋ฉ๋๋ค.
- ๋ค์ ์กฐ๊ฑด์์ผ๋ก ๊ฐ์ i<3์ ํ์ธํ๋๋ฐ, i๊ฐ 3์ด๋ฏ๋ก 3<3์ false๊ฐ ๋ฉ๋๋ค.
- ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด ๋์์ผ๋ฏ๋ก, for๋ฌธ์ด ์ข ๋ฃ๋ฉ๋๋ค.
for (let i = 4; i > 0; i--){
console.log(i);
}
//4
//3
//2
//1
- ์ฆ๊ฐ์์ ๋ฐ๋๋ก ๊ฐ์๋ฅผ ์ํฌ ์๋ ์์ต๋๋ค.
for(;;) {}
- ๋ง์ฝ, ์ด๊ธฐํ์-์กฐ๊ฑด์-์ฆ๊ฐ์์ ๋ฃ์ง ์์ผ๋ฉด ๋ฌดํ๋ฃจํ๊ฐ ๋ฉ๋๋ค.
for(let i = 1; i < 10; i++){
for(let j = 1; j < 10; j++){
console.log(`${i} * ${j} = ${i*j}`);
}
}
// 1 * 1 = 1
// 1 * 2 = 2
// 1 * 3 = 3
//......
// 9 * 9 = 81
- for๋ฌธ ์์์ ๋ค๋ฅธ for๋ฌธ์ ์คํ์ํฌ ์๋ ์์ต๋๋ค.
๐ก 3. while๋ฌธ
- while๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฉด ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํฉ๋๋ค. ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด ๋๋ฉด ๋ฐ๋ณต์ด ์ข ๋ฃ๊ฐ ๋ฉ๋๋ค. ๋ง์ฝ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ boolean๊ฐ์ด ์๋๋ฉด ๊ฐ์ ๋ณํ์ ์ํต๋๋ค.
while(์กฐ๊ฑด์){
๋ฐ๋ณตํ ์ฝ๋ ๋ธ๋ญ
}
//while ์์
let w = 0;
while (w < 3){
console.log(w);
w++;
}
//0
//1
//2
- for๋ฌธ๊ณผ while๋ฌธ ๋ ๋ค ๋ฐ๋ณต๋ฌธ์ด์ง๋ง, for๋ฌธ์ ํ์์ ์ํด์ ๋ฐ๋ณต์ด ๋๊ณ while๋ฌธ์ ์ฐธ-๊ฑฐ์ง์ ์ํด์ ๋ฐ๋ณต์ด ๋ฉ๋๋ค.
// ๋ฌดํ๋ฃจํ
while(true){}
- ์กฐ๊ฑด์์ด ํญ์ ์ฐธ์ธ ๊ฒฝ์ฐ์๋ ๋ฌดํ๋ฃจํ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
let w = 0;
while(true) {
console.log(w);
w++;
if(w ==3){
break;
}
}
//0
//1
//2
- while๋ฌธ์์ ๋ฌดํ๋ฃจํ๋ฅผ ๋๋ฆฌ๋ฉด์ ์ด๋ ํ ํน์ ์กฐ๊ฑด์์ ๋ฐ๋ณต์ ๋ฉ์ถ๊ณ ์ถ์ ๋ break๋ฌธ์ ์ฌ์ฉํ์ฌ while๋ฌธ์ ์ ์ง์ํค๋ฉด ๋ฉ๋๋ค.
๐ก 4. do...while ๋ฌธ
- do...while ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ณ ๋์ ์กฐ๊ฑด์์ ํ๊ฐํฉ๋๋ค. ๊ทธ๋์ ๋ฌด์กฐ๊ฑด ์ฝ๋ ๋ธ๋ก์ด ํ ๋ฒ์ ์คํ์ด ๋ฉ๋๋ค.
//do...while๋ฌธ
do {
๋ฐ๋ณต ์คํํ ์ฝ๋ ๋ธ๋ญ
}while(์กฐ๊ฑด์);
//do...while๋ฌธ ์์
let d = 0;
do {
console.log(d);
d++;
} while (d < 3);
//0
//1
//2
------------------while && do...while-----------------
let w = 0;
while(w<0){
console.log(`w is : ${w}`);
w++;
}
let d = 0;
do {
console.log(`d is : ${d}`);
d++;
}while(d<0);
// d is 0
// do...while์ ์ฝ๋๋ธ๋ญ์ด ๋ฌด์กฐ๊ฑด ํ๋ฒ์ ์คํ๋จ
๐ก 5. for...in๋ฌธ
- for...in๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ํํ๊ธฐ ์ํด์ ์ฌ์ฉํฉ๋๋ค.
//for...in
for(let key in object){}
//for...in ์์
let obj = {
a : 1,
b : 2,
c : 3,
d: 4
};
for(let k in obj) {
console.log(k);
}
// a
// b
// c
// d
for(let k in obj) {
console.log(obj[k]);
}
// 1
// 2
// 3
// 4
- ์ ์์ ๋ฅผ ๋ณด๋ฉด, ๊ฐ์ฒด๋ฅผ ์ํํ๋ฉด์ k๋ผ๋ ๋ณ์์ ์์ฐจ์ ์ผ๋ก obj์ key๋ฅผ ํ ๋นํฉ๋๋ค. ์ฆ, obj์ key๊ฐ 4๊ฐ์ด๋ฉด 4๋ฒ์ ์ํํ๊ฒ ๋ฉ๋๋ค.
- ๊ฐ์ฒด์ ํค๊ฐ ์๋ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด ๋ ๋ฒ์งธ for๋ฌธ์ ๋์จ ๊ฒ์ฒ๋ผ object[key]ํ์์ผ๋ก ์ถ์ถํ ์ ์์ต๋๋ค.
๐ ์ ๋ฆฌ
- ๋ฐ๋ณต๋ฌธ์ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด ๋ ๋๊น์ง ํน์ ์ฝ๋ ๋ธ๋ก์ ๋ฐ๋ณต ์คํํ๋ ๋ฌธ์ ๋๋ค.
- ๋ฐ๋ณต๋ฌธ์๋ for, while, do...while, for...in, for...of๋ฌธ์ด ์์ต๋๋ค.
- for๋ฌธ์ ํน์ ํ์๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค.
- while๋ฌธ์ ํน์ ์กฐ๊ฑด์์ ๋ฐ๋ณตํ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค.
- do...while์ while๊ณผ ๊ฐ์ง๋ง, ์กฐ๊ฑด์ ์ฝ๋ ๋ธ๋ก ๋ค์ ๋ถ์ด ์์ด ๋ฌด์กฐ๊ฑด ํ ๋ฒ์ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
- for...in์ ๊ฐ์ฒด๋ฅผ ์ํํ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ธด ๊ธ ์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค :)
ํ๋ฆฐ ๋ด์ฉ์ด ์๊ฑฐ๋, ๋ง๋ถ์ผ ๋ด์ฉ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋๊ธ ๋ฌ์์ฃผ์ธ์!
์ ๊ธ์ด ์กฐ๊ธ์ด๋๋ง ์ฝ์ผ์ ๋ถ๋ค์๊ฒ ๋์์ด ๋๋๋ก ๋
ธ๋ ฅํ๊ฒ ์ต๋๋ค
๋ค์ ํธ์ ๋ดฌ์~