๋ฐ๋ณต๋ฌธ์ ํน์ ์ํฉ์ด ๋ ๋๊น์ง ์ด๋ค ๋์์ ๋ฐ๋ณตํ๋ค. ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ ์ฝ๋๋ฅผ ๋ฐ๋ณตํด์ ์ธ ํ์ ์์ด ๋ฌถ์ด์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํจ์ผ๋ก์ ์ปดํจํฐ์ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ฏ๋ก, ๋ฐ๋ณต๋ฌธ์ ์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฅ์ ์ฌ์ฉ๋ฒ์ ์๊ณ ์๋ ๊ฒ์ด ์ค์ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ๋ณต๋ฌธ์ ์๋์ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
for
- loops through a block of code a number of timesfor/in
- loops through the properties of an objectfor/of
- loops through the values of an iterable objectwhile
- loops through a block of code while a specified condition is truedo/while
- also loops through a block of code while a specified condition is true์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ๋ณต๋ฌธ์ for
, while
, do...while
์ธ ๊ฐ์ง๊ฐ ์์๋ค.
๊ทธ๋ฌ๋ค ES6๊ฐ ๋๋ฉด์ ๊ฐ์ฒด๋ฅผ ์ํํ๋ ๊ตฌ๋ฌธ์ธ for/in
, ๋ฐฐ์ด์ ์ํํ๋ ๊ตฌ๋ฌธ์ธ for/of
์ด ์ถ๊ฐ๋์๋ค.
๊ทธ๋ผ ๊ฐ๊ฐ์ ๊ตฌ๋ฌธ์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์๋ณด์.
์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๋ฐ๋ณตํ๋ for๋ฌธ
, while ๋ฌธ
, do...while
๋ฌธ์ ๋ํด ์์๋ณด์.
for๋ฌธ
์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก, ๋ณ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฝ๋๋ฅผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ํ์๊ฐ ์ ํด์ ธ ์๋ ๋ฐ๋ณต๋ฌธ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
์ฐ์ for๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์.
for ( ์ด๊ธฐ๋ฌธ ; ์กฐ๊ฑด๋ฌธ ; ์ฆ๊ฐ๋ฌธ) {
// ๋ฐ๋ณตํ ์ฝ๋ ์
๋ ฅ
}
์ด๊ธฐ๋ฌธ์๋ ์ด๊ธฐ๊ฐ์ด ๋ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
์กฐ๊ฑด๋ฌธ์๋ ๋ฐ๋ณต ์กฐ๊ฑด์ ์ ๋๋ค. ์กฐ๊ฑด๋ฌธ์ด true๋ฉด {์ฝ๋}
๊ฐ ์คํ๋๋ค.
์ฆ๊ฐ๋ฌธ์๋ ์ฝ๋ ๋ธ๋ญ ์คํ ํ์ ์ด๊ธฐ๋ฌธ์ ์ฆ๊ฐ์ํฌ์ง, ๊ฐ์์ํฌ์ง ์ ํด์ค๋ค.
์๋๋ ๊ฐ๋จํ ์์์ด๋ค.
for (let i = 0; i < 5; i++) {
console.log(i+1+'ํ ์คํ๋์์ต๋๋ค.');
}
์ฐ์ ์ด๊ธฐ๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์ด๊ธฐ๊ฐ์ด i = 0
์ผ๋ก ์ค์ ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ์กฐ๊ฑด๋ฌธ์ i < 5
๋ก ์ค์ ๋์๋ค. ์ฆ๊ฐ๋ฌธ์ i++
๋ก, {์ฝ๋}
์คํ ํ์ i์ 1์ด ๋ํด์ง ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ์ฝ๋๋ i๊ฐ์ด 4๊ฐ ๋ ๋๊น์ง ์คํ๋ ๊ฒ์ด๊ณ ์ด 5ํ ์คํ๋๋ค. (i=0, i=1, i=2, i=3, i=4)
{์ฝ๋}์ ๋ฐ๋ผ ์ฝ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
1ํ ์คํ๋์์ต๋๋ค.
2ํ ์คํ๋์์ต๋๋ค.
3ํ ์คํ๋์์ต๋๋ค.
4ํ ์คํ๋์์ต๋๋ค.
5ํ ์คํ๋์์ต๋๋ค.
while๋ฌธ
์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋์์๋ง ์ฝ๋๋ฅผ ๋ฐ๋ณตํ๋ค.
while๋ฌธ์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
์ด๊ธฐ๋ฌธ
while (์กฐ๊ฑด๋ฌธ) {
์ฝ๋;
์ฆ๊ฐ๋ฌธ;
}
์ด๊ธฐ๋ฌธ์์๋ ์นด์ดํฐ ๋ณ์ i๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ค.
์กฐ๊ฑด๋ฌธ์์๋ ์กฐ๊ฑด์์ ๊ฒ์ฌํ๋ค. ์กฐ๊ฑด๋ฌธ์ด true
์ด๋ฉด ์ค๊ดํธ {}
์์ ์ฝ๋๊ฐ ์คํ๋๋ค.
์ฆ๊ฐ๋ฌธ์์๋ ๋ฐ๋ณตํ์๋ฅผ ์ ์ดํ๋ค.
์์๋ฅผ ํตํด ์์๋ณด์.
let i = 0
while (i < 4) {
console.log(i+1+'๋ฒ์งธ ์คํ');
i++;
}
์ฐ์ ๋ฐ๋ณต ํ์๋ฅผ ์ ์ดํ ์นด์ดํฐ ๋ณ์ i๋ฅผ ์ ์ธํ๋ค. let i = 0
๊ทธ๋ฆฌ๊ณ (์กฐ๊ฑด๋ฌธ)์ ๋ฐ๋ณต ์กฐ๊ฑด์ ์ค์ ํ๋ค. while (i < 4)
๊ทธ ํ ์ค๊ดํธ{}
์์ ๋ฐ๋ณต๋ ์ฝ๋๋ฅผ ์ ๋๋ค. console.log(i+1+'๋ฒ์งธ ์คํ');
์ด์ด์ ์นด์ดํฐ ๋ณ์๋ฅผ ์ ์ดํ ์๋ ์จ ์ค๋ค. i++
๊ฒฐ๊ณผ๋ ์๋์ฒ๋ผ ๋์จ๋ค.
1๋ฒ์งธ ์คํ
2๋ฒ์งธ ์คํ
3๋ฒ์งธ ์คํ
4๋ฒ์งธ ์คํ
do...while๋ฌธ
์ while๋ฌธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋์์๋ง ์ฝ๋๋ฅผ ๋ฐ๋ณตํ๋ค.
do...while๋ฌธ
์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
์ด๊ธฐ๋ฌธ
do {
์ฝ๋;
์ฆ๊ฐ๋ฌธ;
}
while (์กฐ๊ฑด);
while๋ฌธ
๊ณผ ๋ค๋ฅด๊ฒ do...while๋ฌธ
์ ์คํ๋ ์ฝ๋๊ฐ ์์, ์กฐ๊ฑด์ด ๋ค์ ์๋ค. ๋ฐ๋ผ์ ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ฌํ๊ธฐ ์ ์ ์ผ๋จ ์ฝ๋๊ฐ ํ ๋ฒ ์คํ๋๋ค. ์ฆ, ์กฐ๊ฑด์ด false
์ผ ๋๋ ์ฃผ์ด์ง ์ฝ๋๊ฐ ์ต์ ํ ๋ฒ ์คํ๋๋ค.
์์๋ฅผ ํ๋ฒ ๋ณด์.
var i = 0
do {
console.log(i+1+'ํ ์คํ๋จ');
i++
} while (i < 2);
์ ์ฝ๋๋ ์ฐ์ console.log๊ฐ 1ํ ์คํ๋๋ค. ๊ทธ๋ฆฌ๊ณ while ์กฐ๊ฑด์ด true์ธ ๋์ ์ฝ๋๊ฐ ๋ฐ๋ณต๋๋ค. ๋ฐ๋ผ์ ์คํ ๊ฒฐ๊ณผ ์ฝ์์ฐฝ์ ์๋์ ๊ฐ์ด ๊ธฐ๋ก๋๋ค.
1ํ ์คํ๋จ
2ํ ์คํ๋จ
3ํ ์คํ๋จ
๋ง์ฝ ์กฐ๊ฑด๋ฌธ์ while(false)
๋ก ๋ฐ๊พธ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋์ฌ๊น? do...while๋ฌธ์ do ์ฝ๋๊ฐ while ์กฐ๊ฑด์ ์์ ์ค๋ฏ๋ก false์ผ ๋๋ ์ผ๋จ 1ํ ์คํ๋๋ค. ๋ฐ๋ผ์ ์๋๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
1ํ ์คํ๋จ
for...in
์ ๊ฐ์ฒด๋ฅผ ์ํํ๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค. ์ด๋ค ๊ฐ์ฒด๊ฐ ์์ ๋, for...in
๋ฐ๋ณต๋ฌธ์ ํตํด ๊ทธ ๊ฐ์ฒด์ ์์ฑ ๐ (key ๋๋ value๊ฐ) ํ๋ ํ๋์ ์ ๊ทผํ๋ฉด์ ๋ฐ๋ณตํ ์ ์๋ค.
๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
for(๋ฐฐ์ด์ ๋ฐํ๋ฐ์ ๋ณ์ ์ ์ธ in ๊ฐ์ฒด) {
์ฝ๋
}
let object = {
a: 1,
b: 2,
c: 3
};
for (let propertyKey in object) {
console.log(propertyKey + '์ถ๋ ฅ')
}
์ธ ๊ฐ์ ์์ฑ a:1
, b:2
, c:3
์ ๊ฐ๊ณ ์๋ object
๋ผ๋ ์ด๋ฆ์ ๊ฐ์ฒด๊ฐ ์๋ค. ์ด ์์ฑ์ key๊ฐ a
, b
, c
์ ์ ๊ทผํ๋ ค๊ณ ํ๋ค.
for๋ฌธ ๊ดํธ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ,
๐ let item
์ด๋ค ๋ฐฐ์ด์ key๊ฐ์ ๊ฐ์ ธ์ฌ ์ง ์ง์ ํด ์ฃผ์๋ค.
๐ in object
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ์ฒด์ ๊ฐ key๊ฐ์ด ์ฝ๋์ ์ ์ฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
a์ถ๋ ฅ
b์ถ๋ ฅ
c์ถ๋ ฅ
key๊ฐ์ด ์๋ value๊ฐ์ ์ ๊ทผํ๋ ค๋ฉด ๊ฐ์ฒด๋ช
์ [๋ณ์๋ช
]
๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
let object = {
a: 1,
b: 2,
c: 3
};
for (let property in object) {
console.log('key๋ ' + property + '์ด๊ณ , value๋ ' + object[property] + '์
๋๋ค.');
}
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
key๋ a์ด๊ณ , value๋ 1์
๋๋ค.
key๋ b์ด๊ณ , value๋ 2์
๋๋ค.
key๋ c์ด๊ณ , value๋ 3์
๋๋ค.
for...of
๋ ๋ฐฐ์ด์ ์ํํ๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค. ์ฌ์ฉ๋ฒ์ for...in
๊ณผ ๋น์ทํ๋ค.
์์๋ฅผ ๋ณด์.
let array = [1, 2, 3];
for (let result of array) {
console.log(result);
}
๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
1
2
3
๊ทธ๋ ๋ค๋ฉด for
, do...while
, while
์ค ์ด๋ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ผ ํ ๊น?
for๋ฌธ
์ ์ด๊ธฐ๊ฐ์ด ์์ผ๋ฉด์ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ๋ค.
while๋ฌธ
์ ์กฐ๊ฑด์ ๋ง์ง ์์ ๋ ์ฝ๋๋ฅผ ์์ ์คํํ์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
do...while๋ฌธ
์ ์กฐ๊ฑด์ ์๊ด ์์ด ์ผ๋จ ์ฝ๋๋ฅผ ํ๋ฒ ์คํํ ๋ ์ฌ์ฉํ๋ค.