๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต๋ฌธ์ ๋๊ฐ์ ๋ช
๋ น์ ์ผ์ ํ์ ๋งํผ ๋ฐ๋ณตํ์ฌ ์ํํ๋๋ก ์ ์ดํ๋ ๋ช
๋ น๋ฌธ์ด๋ฉฐ,
for๋ฌธ, while๋ฌธ์ด ์์ผ๋ฉฐ for๋ฌธ์๋ for ... in๋ฌธ for ... of๋ฌธ์ด ์๋ค.
for๋ฌธ์ ๊ดํธ๋ก ๊ฐ์ธ๊ณ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ ์ธ ๊ฐ์ ์ ํ์๊ณผ ๋ฐ๋ณต์ ์ํํ ๋ธ๋ญ๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
for ([initialization]; [condition]; [final - expression])
statement
MDN๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์ ์๋ค.
๊ตฌ์ฑ์์ | ์ | ์ค๋ช |
---|---|---|
initialization (์ ์ธ๋ฌธ) | let i = 0; | ์ ๋๋ ๋ณ์ ์ ์ธ, var๋๋ let ํค์๋๋ฅผ ์ฌ์ฉ |
condition (์กฐ๊ฑด๋ฌธ) | i < a.length; | ๋ฐ๋ณตํ ๋๋ง๋ค ํ๊ฐํ ์์ด๋ฉฐ, ํ๊ณผ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ผ๋ฉด statement๋ฅผ ์คํํ๋ค. |
final - expression (์ฆ๊ฐ๋ฌธ) | i++ | ๋ค์๋ฒ condition ํ๊ฐ ์ด์ ์ ๋ฐ์ํ๋ค. ๋ณ์๋ฅผ ์ฆ๊ฐํ๊ฑฐ๋ ๋ฐ๊ฟ๋ ์ด๋ค. |
statement (๋ฌธ) | result(i) | ์กฐ๊ฑด์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ๋ ์คํ. |
for ... in๋ฌธ์ ์์๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ๋ค์ ํฌํจํ์ฌ ๊ฐ์ฒด์์ ๋ฌธ์์ด๋ก ํค๊ฐ ์ง์ ๋ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๋ํด ๋ฐ๋ณต
for (variable in object) { ... }
/*-------------------------*/
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
// expected output:
// "a: 1"
// "b: 2"
// "c: 3"
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
variable (๋ณ์) | ๋งค๋ฒ ๋ฐ๋ณต ์, ๋ค๋ฅธ ์์ฑ์ด๋ฆ์ด ๋ณ์๋ก ์ง์ ๋๋ค. |
object | ๋ฐ๋ณต ์์ ์ ์ํํ ๊ฐ์ฒด๋ก ์ด๊ฑฐํ ์์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด |
=> ๊ฐ์ฒด์ ๋ฐ๋ณต์ ์ํด ๋ง๋ค์ด ์ก์ง๋ง, ๋ฐฐ์ด์ ๋ฐ๋ณต์ ์ํด์๋ ์ด๋ฏธ Array.prototype.forEach() ๋, for ... of ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐ์ด์ง ์๋๋ค.
=> for ... in์ ๊ฐ์ฒด์ ์์ฑ์ ํ์ธํ๋ ์ฉ๋, ์ฆ key - value์ ์์ด ์ ํธ๋๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ํน์ ๊ฐ์ ๊ฐ์ง ํค๊ฐ ์๋์ง ํ์ธํ๋ ์ฉ๋๋ก ์ธ ์ ์์.
for ... of๋ฌธ์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋ํด ๋ฐ๋ณตํ๊ณ ๊ฐ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๋ฌธ์ด๋ฉฐ,
for (variable of iterable) {
statement
}
/*-------------------------*/
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
// expected output: "a"
// expected output: "b"
// expected output: "c"
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
variable (๋ณ์) | ๊ฐ ๋ฐ๋ณต์ ์๋ก ์์ฑ๊ฐ์ด variable์ ํ ๋น๋๋ค. |
iterable | ๋ฐ๋ณต๋๋ ์ด๊ฑฐ๊ฐ๋ฅํ ์์ฑ์ด ์๋ ๊ฐ์ฒด (Array, String, Map, Set, Dom ์ ๋ถ ์ฌ์ฉ ๊ฐ๋ฅ) |
์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ ๋ ์ฝ๋ ๋ธ๋ก์ ๊ณ์ํด์ ๋ฐ๋ณต ์ํํ๋ ๋ฐ๋ณต๋ฌธ
-> for๋ฌธ์ ๋นํด ์ ์ธ๋ฌธ๊ณผ ์ฆ๊ฐ๋ฌธ ์์ด loop๋ฅผ ์ํํ๋ฉฐ, ๋ฌดํ loop๋ฑ ์ํ์ ๋ง์ด ์ฌ์ฉ
-> ์กฐ๊ฑด๋ฌธ์ ์ฝ๋ ๋ธ๋ก๋ณด๋ค ์๋๋ก ์ฎ๊ธด do ~ while ๋ฐ๋ณต๋ฌธ๋ ์กด์ฌ
(์ต์ ํ๋ฒ ์ํ์ด ํ์ํ ๋ ๋ง์ด ์ฌ์ฉ)
while (condition) {
statement
}
/*-------------------------*/
var n = 0;
var x = 0;
while (n < 3) {
n++;
x += n;
}
// n์ด 3๋ณด๋ค ์์ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
์์ ์ค๋ช
: n์ x์ ๊ณ์ ๋ํ๋ ๊ฒ
n++; : n์ดํ๋์ฉ ๋์ด๋๋ฉฐ ๋ฐ๋ณต๋๋ค.
=> ๋ฐ๋ผ์
์ฒซ๋ฒ์งธ ๋ฐ๋ณต์์๋ n = 1, x = 1 ์ด๊ณ ,
๋๋ฒ์งธ ๋ฐ๋ณต์์๋ n = 2, x = 3 (๋๋ฒ์งธ ๋ฐ๋ณต n + ์ฒซ๋ฒ์งธ ๋ฐ๋ณต x),
์ธ๋ฒ์งธ ๋ฐ๋ณต์์๋ n = 3, x = 6 (์ธ๋ฒ์งธ ๋ฐ๋ณต n + ๋๋ฒ์จฐ ๋ฐ๋ณต x) ์ด๋ค.
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
condition (์กฐ๊ฑด๋ฌธ) | ์กฐ๊ฑด๋ฌธ์ด ๋ค์ด๊ฐ๋ ์๋ฆฌ์ด๋ฉฐ ์ฐธ์ด๋ฉด while์์ ๋ฌธ์ฅ๋ค์ด ์คํ, ๊ฑฐ์ง์ด๋ฉด while ํ๋ก ๋์ด๊ฐ๋ค. |
statement (๋ฌธ) | ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ฉด ์คํ๋๋ฉฐ, ๋ฐ๋ณต๋ฌธ ์์ ์ฌ๋ฌ๊ฐ์ ๋ฌธ์ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ค๊ดํธ๋ฅผ ์ฌ์ฉ |
do ... while๋ฌธ์ ํ
์คํธ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋ ๋๊น์ง ์ง์ ๋ ๊ตฌ๋ฌธ์ ์คํํ๋ ๋ฃจํ๋ฅผ ๋ง๋ ๋ค. ๋จ, ๊ตฌ๋ฌธ์ด ์คํ๋ ๋ค ํ
์คํธ ์กฐ๊ฑด์ด ํ๊ฐ๋๋ฏ๋ก ๊ตฌ๋ฌธ์ด true์ธ์ง false์ธ์ง์ ์๊ด์์ด ๊ตฌ๋ฌธ์ ๋ฌด์กฐ๊ฑด ํ๋ฒ์ด๋ผ๋ ์คํํด์ผ ํ ๋ ์ฌ์ฉ๋๋ค.
-> ๋๋ถ๋ถ์ case์์ while์ ์ฌ์ฉํจ.
do {
statement
}
while (condition);
/*-------------------------*/
let result = '';
let i = 0;
do {
i = i + 1;
result = result + i;
} while (i < 5);
console.log(result);
// expected result: "12345"
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
statement (๋ฌธ) | ํ ์คํธ ์กฐ๊ฑด์ด ์ฐธ์ผ๋ ํ๋ฒ ์ด์ ์คํ๋๋ ๊ตฌ๋ฌธ |
condition (์กฐ๊ฑด๋ฌธ) | ๋ฃจํ๊ฐ ์คํ๋ ๋๋ง๋ค ํ๊ฐ๋๋ ์ |