๐ŸŒธ08์žฅ. ์ œ์–ด๋ฌธ

์ œ์–ด๋ฌธ(control flow statemnet)์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰(์กฐ๊ฑด๋ฌธ)ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต ์‹คํ–‰(๋ฐ˜๋ณต๋ฌธ)ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ œ์–ด๋ฌธ์€ ์ฝ”๋“œ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ธ์œ„์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ์ง๊ด€์ ์ธ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ ๋‹ค. (๊ฐ€๋…์„ฑ ํ•ด์นจ)

  • forEach, map, filter, reduce์™€ ๊ฐ™์€ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์—์„œ๋Š” ์ œ์–ด๋ฌธ์˜ ์‚ฌ์šฉ์„ ์–ต์ œํ•˜๊ณ ์ž ํ•œ๋‹ค.

โœ…8.1 ์ œ์–ด๋ฌธ์˜ ์ข…๋ฅ˜

๋ธ”๋ก๋ฌธ(block statement/compound statement)

0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์€ ๊ฒƒ.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธ”๋ก๋ฌธ์„ "ํ•˜๋‚˜์˜ ์‹คํ–‰ ๋‹จ์œ„"๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

์กฐ๊ฑด๋ฌธ(conditional statement)

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

    • ์กฐ๊ฑด์‹ : ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€

    • ๋…ผ๋ฆฌ์  ์ฐธ, ๊ฑฐ์ง“์œผ๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก์„ ๊ฒฐ์ •

  • switch ๋ฌธ

    • ํ‘œํ˜„์‹ : ๋ถˆ๋ฆฌ์–ธ ๊ฐ’๋ณด๋‹ค๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž ๊ฐ’์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

    • ๋…ผ๋ฆฌ์  ์ฐธ/๊ฑฐ์ง“ ๋ณด๋‹ค๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ(case)์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก์„ ๊ฒฐ์ •

๋ฐ˜๋ณต๋ฌธ(loop statement)

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

์œ„ ๊ณผ์ •์„ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • for ๋ฌธ

    • ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ โ€œ๋ช…ํ™•โ€ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • while ๋ฌธ

    • ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ โ€œ๋ถˆ๋ช…ํ™•โ€ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • do...while ๋ฌธ <์ˆœ์„œ ์ฃผ์˜>

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

break ๋ฌธ

๋ ˆ์ด๋ธ” ๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, switch ๋ฌธ์˜ ์ฝ”๋“œ๋ธ”๋ก์„ ํƒˆ์ถœํ•œ๋‹ค.

๋ ˆ์ด๋ธ” ๋ฌธ(label statement) : ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ฌธ

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

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

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

//๋ ˆ์ด๋ธ” ๋ฌธ

// 1๏ธโƒฃ foo ๋ผ๋Š” ๋ ˆ์ด๋ธ” ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ฌธ
foo: console.log("foo");

// 2๏ธโƒฃ foo๋ผ๋Š” ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ ˆ์ด๋ธ” ๋ธ”๋ก๋ฌธ
foo: {
    console.log(1);
    break foo; //  foo ๋ ˆ์ด๋ธ” ๋ธ”๋ก๋ฌธ์„ ํƒˆ์ถœํ•œ๋‹ค.
    console.log(2);
}

๋ ˆ์ด๋ธ” ๋ฌธ์€ ์ค‘์ฒฉ๋œ for ๋ฌธ ์™ธ๋ถ€๋กœ ํƒˆ์ถœ ํ•  ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ ๊ทธ ์™ธ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

outer: for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i + j === 1) break outer;
        console.log(`${i}+${j} = ${i + j}`);
    }
}
// 0+0 = 0 ๋

for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i + j === 1) break;
        console.log(`${i}+${j} = ${i + j}`);
    }
}

// 0+0 = 0 ๋๋‚˜์ง€ ์•Š๊ณ  i=1 i=2๋กœ ๋„˜์–ด๊ฐ
// 2+0 = 2
// 2+1 = 3
// 2+2 = 4

continue ๋ฌธ

๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์‹คํ–‰์„ ํ˜„ ์‹œ์ ์—์„œ ์ค‘๋‹จํ•˜๊ณ  , ๋ฐ˜๋ณต๋ฌธ์˜ ์ฆ๊ฐ์‹์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์ด๋™์‹œํ‚จ๋‹ค. ( break ๋ฌธ์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. )
  • if ๋ฌธ ๋‚ด์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ฝ”๋“œ๊ฐ€ ํ•œ์ค„ ์ด๋ผ๋ฉด โ†’ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ continue ๋ฌธ์„ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค.

  • ํ•˜์ง€๋งŒ, if ๋ฌธ ๋‚ด์—์„œ ์‹คํ–‰ํ–์•ผ ํ•  ์ฝ”๋“œ๊ฐ€ ๊ธธ๋‹ค๋ฉด โ†’ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ํ•œ ๋‹จ๊ณ„ ๋” ๊นŠ์–ด์ง€๋ฏ€๋กœ , continue ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค.

Last updated