JavaScript ๐Ÿช† ๋ฐ˜๋ณต๋ฌธ์˜ ์ข…๋ฅ˜ ๋‹ค์„ฏ๊ฐ€์ง€

haleyยท2022๋…„ 1์›” 27์ผ
1

JavaScript ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail

๋ฐ˜๋ณต๋ฌธ์€ ํŠน์ • ์ƒํ™ฉ์ด ๋  ๋•Œ๊นŒ์ง€ ์–ด๋–ค ๋™์ž‘์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์“ธ ํ•„์š” ์—†์ด ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•จ์œผ๋กœ์„œ ์ปดํ“จํ„ฐ์˜ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋ฏ€๋กœ, ๋ฐ˜๋ณต๋ฌธ์„ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ์˜ ์ข…๋ฅ˜์™€ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.





โœ๏ธ ๋ฐ˜๋ณต๋ฌธ์˜ ์ข…๋ฅ˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐ˜๋ณต๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.

  • for - loops through a block of code a number of times
    ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • for/in - loops through the properties of an object
    ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • for/of - loops through the values of an iterable object
    ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • while - loops through a block of code while a specified condition is true
    ์ฃผ์–ด์ง„ ์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • do/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๋ฌธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด์ž.

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๋ฌธ์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ดˆ๊ธฐ๋ฌธ
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

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 ์€ ๊ฐ์ฒด๋ฅผ ์ˆœํ™˜ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค. ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๋•Œ, for...in ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ทธ ๊ฐ์ฒด์˜ ์†์„ฑ ๐Ÿ” (key ๋˜๋Š” value๊ฐ’) ํ•˜๋‚˜ ํ•˜๋‚˜์— ์ ‘๊ทผํ•˜๋ฉด์„œ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 for(๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜๋ฐ›์„ ๋ณ€์ˆ˜ ์„ ์–ธ in ๊ฐ์ฒด) {
 	์ฝ”๋“œ 
   }

for...in ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๐Ÿ”‘ key๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ

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์ถœ๋ ฅ

for...in ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๐Ÿ”“value๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ

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...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๋ฌธ์€ ์กฐ๊ฑด์— ์ƒ๊ด€ ์—†์ด ์ผ๋‹จ ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

profile
๊ธฐ๋ก์žฅ

0๊ฐœ์˜ ๋Œ“๊ธ€