Skip to content

Latest commit

ย 

History

History
148 lines (95 loc) ยท 5.87 KB

File metadata and controls

148 lines (95 loc) ยท 5.87 KB

์ œ์–ด๋ฌธ control flow statement

์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰(์กฐ๊ฑด๋ฌธ)ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต์‹คํ–‰(๋ฐ˜๋ณต๋ฌธ)ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์ œ์–ด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ์‹คํ–‰ํ๋ฆ„์„ ๊ฐ•์ œ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฐ€๋…์„ฑ ๋–จ์–ด์ง
    • ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ œ์–ด๋ฌธ ๋ณด๋‹ค๋Š” forEach, map, filter, reduce๊ฐ™์€ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ž.

1. ๋ธ”๋ก๋ฌธ block statement/compound statement

0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์€ ๊ฒƒ (์ฝ”๋“œ ๋ธ”๋ก ๋˜๋Š” ๋ธ”๋ก)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ธ”๋ก๋ฌธ์€ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ œ์–ด๋ฌธ, ํ•จ์ˆ˜์ •์˜ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธ”๋ก๋ฌธ์„ ํ•˜๋‚˜์˜ ์‹คํ–‰๋‹จ์œ„๋กœ ์ทจ๊ธ‰ํ•จ
  • ๋ธ”๋ก๋ฌธ์€ ๋ฌธ์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ž์ฒด์ข…๊ฒฐ์„ฑ์„ ๊ฐ–๊ธฐ๋•Œ๋ฌธ์— ๋ธ”๋ก๋ฌธ์˜ ๋์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์ด ๋ถ™์ง€์•Š๋Š”๋‹ค.

2. ์กฐ๊ฑด๋ฌธ conditional statement

์ฃผ์–ด์ง„ ์กฐ๊ฑด์‹ conditional expression์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก(๋ธ”๋ก๋ฌธ)์˜ ์‹คํ–‰์„ ๊ฒฐ์ •ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ifโ€ฆelse ๋ฌธ๊ณผ switch๋ฌธ์œผ๋กœ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด๋ฌธ์„ ์ œ๊ณตํ•œ๋‹ค.

1) if โ€ฆ else ๋ฌธ

์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ธ”๋ก์„ ๊ฒฐ์ •ํ•œ๋‹ค.

  • ์กฐ๊ฑด์‹: ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹

    • if ๋ฌธ์˜ ์กฐ๊ฑด์‹ ํ‰๊ฐ€๊ฐ€ ๋ถˆ๋ฆฌ์–ธ๊ฐ’์ด ์•„๋‹Œ ๊ฐ’์ด๋ผ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์•”๋ฌต์ ์œผ๋กœ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜๋œ๋‹ค.
  • ํ‰๊ฐ€๊ฒฐ๊ณผ: ๋…ผ๋ฆฌ์  ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“

  • ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฉด if๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์‹คํ–‰, false์ด๋ฉด else๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์‹คํ–‰๋œ๋‹ค.

  • else if ์กฐ๊ฑด์‹ ์ถ”๊ฐ€

  • ์šฉ๋„

    • ์กฐ๊ฑด์‹์ด ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜์–ด์•ผํ•จ
    • ๋…ผ๋ฆฌ์  ์ฐธ, ๊ฑฐ์ง“์œผ๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก์„ ๊ฒฐ์ •ํ•œ๋‹ค.

2) switch ๋ฌธ

์ฃผ์–ด์ง„ ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜์—ฌ ๊ทธ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ํ‘œํ˜„์‹์„ ๊ฐ–๋Š” case๋ฌธ์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์˜ฎ๊ธด๋‹ค.

  • case ํ‘œํ˜„์‹: ์‹คํ–‰ํ•  ๋ฌธ; break;

  • switch ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” case๋ฌธ์ด ์—†์œผ๋ฉด ์‹คํ–‰์ˆœ์„œ๋Š” default๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. (์˜ต์…˜)

  • ์šฉ๋„

    • switch๋ฌธ์˜ ํ‘œํ˜„์‹์€ ๋ถˆ๋ฆฌ์–ธ๊ฐ’๋ณด๋‹ค๋Š” ๋ฌธ์ž์—ด, ์ˆซ์ž๊ฐ’์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
    • switch๋ฌธ์€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ(case)์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ธ”๋ก์„ ๊ฒฐ์ •ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ฃผ์˜์‚ฌํ•ญ

    • ํด์Šค๋ฃจ fall through : break๋ฌธ์ด ์—†์œผ๋ฉด?
      • switch๋ฌธ์˜ ํ‘œํ˜„์‹ ํ‰๊ฐ€๊ฒฐ๊ณผ์™€ ์ผ์น˜ํ•˜๋Š” case๋ฌธ์œผ๋กœ ์‹คํ–‰ํ๋ฆ„์ด ์ด๋™ํ•˜์—ฌ ๋ฌธ์„ ์‹คํ–‰ํ–ˆ์ง€๋งŒ break๊ฐ€ ์—†์–ด์„œ switch๋ฌธ์„ ํƒˆ์ถœํ•˜์ง€๋ชปํ•˜๊ณ  ๋๋‚ ๋•Œ๊นŒ์ง€ ์ดํ›„์˜ ๋ชจ๋“  case๋ฌธ, default๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
    • break ๋ฌธ
      • break๋ฌธ์€ ์ฝ”๋“œ ๋ธ”๋ก์—์„œ ํƒˆ์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. break๋ฌธ์ด ์—†๋‹ค๋ฉด case๋ฌธ์˜ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜์ง€์•Š๋”๋ผ๋„ ์‹คํ–‰ํ๋ฆ„์ด ๋‹ค์Œ case๋ฌธ์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    • default ๋ฌธ
      • default ๋ฌธ์—๋Š” break๋ฌธ์„ ์ƒ๋žตํ•˜๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ 
      • default๋ฌธ์€ switch๋ฌธ์˜ ๋งจ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•˜๋ฏ€๋กœ default๋ฌธ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด switch๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ„๋„์˜ break๋ฌธ์ด ํ•„์š”์—†๋‹ค.

3. ๋ฐ˜๋ณต๋ฌธ loop statement

์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๊ฒฝ์šฐ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•œ๋‹ค. โ†’ ๋‹ค์‹œ ์กฐ๊ฑด์‹ ํ‰๊ฐ€ํ•˜์—ฌ ์ฐธ์ด๋ฉด ์ฝ”๋“œ๋ธ”๋ก ๋‹ค์‹œ ์‹คํ–‰ โ†’ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ผ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ๋ฐ˜๋ณต

for ๋ฌธ, while ๋ฌธ, do โ€ฆ while ๋ฌธ

๐Ÿ’ก < ๋ฐ˜๋ณต๋ฌธ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค > - ๋ฐฐ์—ด ์ˆœํšŒ forEach ๋ฉ”์„œ๋“œ - ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์—ด๊ฑฐ for โ€ฆ in ๋ฌธ - ์ดํ„ฐ๋Ÿฌ๋ธ” ์ˆœํšŒ for โ€ฆ of ๋ฌธ

1) for ๋ฌธ

์กฐ๊ฑด์‹์ด false๋กœ ํ‰๊ฐ€๋ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋ธ”๋ก์„ ๋ฐ˜๋ณต ์‹คํ–‰ ํ•œ๋‹ค.

for (๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ๋˜๋Š” ํ• ๋‹น๋ฌธ; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹) {
	์กฐ๊ฑด์‹์ด ์ฐธ์ธ ๊ฒฝ์šฐ ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋ฌธ;
}
  • for๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์€ ๋ชจ๋‘ ์˜ต์…˜์ด๋‹ค! ๋งŒ์•ฝ, ์–ด๋–ค ์‹๋„ ์„ ์–ธํ•˜์ง€์•Š์œผ๋ฉด ๋ฌดํ•œ๋ฃจํ”„(์ฝ”๋“œ๋ธ”๋ก์„ ๋ฌดํ•œํžˆ ๋ฐ˜๋ณต์‹คํ–‰)๊ฐ€ ๋œ๋‹ค.
for (;;) { ... } // ๋ฌดํ•œ๋ฃจํ”„
  • for๋ฌธ์€ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (์ค‘์ฒฉ for๋ฌธ)

2) while ๋ฌธ

์กฐ๊ฑด์‹์ด false๋กœ ํ‰๊ฐ€๋ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋ธ”๋ก์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ๋‹ค.

for๋ฌธ์€ ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ ๋ช…ํ™•ํ• ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  while๋ฌธ์€ ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ ๋ถˆ๋ช…ํ™•ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค

์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ๊ฐ€ ๋ถˆ๋ฆฌ์–ธ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ๋ถˆ๋ฆฌ์–ธ๊ฐ’์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜์—ฌ ๋…ผ๋ฆฌ์  ์ฐธ, ๊ฑฐ์ง“์„ ๊ตฌ๋ณ„ํ•œ๋‹ค.

while(true) { ... }//๋ฌดํ•œ๋ฃจํ”„

3) do โ€ฆ while ๋ฌธ

์ฝ”๋“œ ๋ธ”๋ก์„ ๋จผ์ € ์‹คํ–‰(do)ํ•˜๊ณ  ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•œ๋‹ค.

์ฝ”๋“œ ๋ธ”๋ก์€ ๋ฌด์กฐ๊ฑด ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰๋จ

4. break ๋ฌธ

break๋ฌธ์€ ์ฝ”๋“œ ๋ธ”๋ก์„ ํƒˆ์ถœํ•œ๋‹ค.

  • ๋ ˆ์ด๋ธ” ๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, switch ๋ฌธ์˜ ์ฝ”๋“œ๋ธ”๋ก์„ ํƒˆ์ถœํ•œ๋‹ค.
  • ๋ ˆ์ด๋ธ” ๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, switch ๋ฌธ ์ฝ”๋“œ๋ธ”๋ก ์™ธ์— break๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด SyntaxError(๋ฌธ๋ฒ•์—๋Ÿฌ)๋ฐœ์ƒํ•œ๋‹ค.

1) ๋ ˆ์ด๋ธ” ๋ฌธ label statement

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

switch๋ฌธ์˜ case๋ฌธ๊ณผ default๋ฌธ๋„ ๋ ˆ์ด๋ธ”๋ฌธ์ด๋‹ค.

๋ ˆ์ด๋ธ” ๋ฌธ์„ ํƒˆ์ถœํ•˜๋ ค๋ฉด break๋ฌธ์— ๋ ˆ์ด๋ธ” ์‹๋ณ„์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค.

foo: console.log('foo'); // foo๋ผ๋Š” ๋ ˆ์ด๋ธ” ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ ˆ์ด๋ธ” ๋ฌธ
  • ์ค‘์ฒฉ for๋ฌธ์—์„œ ํƒˆ์ถœ

    • ๋‚ด๋ถ€ for๋ฌธ ํƒˆ์ถœํ•˜๋ ค๋ฉด break๋ฌธ
    • ์™ธ๋ถ€ for๋ฌธ ํƒˆ์ถœํ•˜๋ ค๋ฉด break๋ ˆ์ด๋ธ”๋ฌธ
  • break๋ฌธ์€ ๋ ˆ์ด๋ธ” ๋ฌธ์ด ์•„๋‹ˆ๋ผ, ๋ฐ˜๋ณต๋ฌธ switch๋ฌธ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด break๋ฌธ์— ๋ ˆ์ด๋ธ” ์‹๋ณ„์ž๋ฅผ ์ง€์ •ํ•˜์ง€์•Š๋Š”๋‹ค.

  • ์šฉ๋„

    • ๋ ˆ์ด๋ธ”๋ฌธ์€ ์ค‘์ฒฉ๋œ for๋ฌธ ์™ธ๋ถ€๋กœ ํƒˆ์ถœํ• ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ ๊ทธ๋ฐ–์˜ ๊ฒฝ์šฐ์—๋Š” ๊ถŒ์žฅํ•˜์ง€์•Š๋Š”๋‹ค.
    • ๋ ˆ์ด๋ธ” ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ์•ˆ์ข‹์Œ

2) continue ๋ฌธ

๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์‹คํ–‰์„ ํ˜„ ์ง€์ ์—์„œ ์ค‘๋‹จํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์˜ ์ฆ๊ฐ์‹์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์ด๋™์‹œํ‚จ๋‹ค.

break๋ฌธ์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.