
JavaScript์ ์ ์ด๋ฌธ์ธ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ์ ๋ํด ์์๋ณด์!
์ ์ด๋ฌธ์ด๋, ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ code block์ ์คํํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
ํ๋ฆ์ ์ธ์์ ์ผ๋ก ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋ฉ ์คํฌ์ ๋งค์ฐ ์ค์ํ ๋ฌธ๋ฒ์ด๋ค!
block/compound statement ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
0๊ฐ ์ด์์ statement๋ฅผ {} ๋ก ๋ฌถ์๊ฒ์ ๋งํ๊ณ , ์ด๋ฅผ code block ์ด๋ผ๊ณ ํ๋ค.
JavaScript์์๋ ๋ธ๋ก๋ฌธ์ ํ๋์ ์คํ๋จ์๋ก ์ทจ๊ธํ๋๋ฐ,
์ ์ด๋ฌธ์ด๋ ํจ์๋ฅผ ์ ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
JavaScript์ ์กฐ๊ฑด๋ฌธ์ธ if...else ๋ฌธ๊ณผ switch ๋ฌธ์ ์ฐจ๋ก๋ก ์์๋ณด์.
์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true/false ์ฆ, boolean ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ด๋ค.
์ด๋ ์กฐ๊ฑด์์ ํ๊ฐ๊ฒฐ๊ณผ๊ฐ boolean ํ์ ์ด ์๋๋ผ๋ฉด, boolean ํ์ ์ผ๋ก์ ์๋ฌต์ ํ์ ๋ณํ์ด ์ผ์ด๋๋ค.
๋ ผ๋ฆฌ์ ์ธ ์ฐธ ๊ฑฐ์ง์ ๋ฐ๋ผ ์คํํ code block์ ๊ฒฐ์ ํ๋ ์กฐ๊ฑด๋ฌธ์ด๋ค.
์กฐ๊ฑด์ ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ,
true์ด๋ฉด if ๋ฌธ์ code block,
false์ด๋ฉด else ๋ฌธ์ code block์ ์คํํ๋ค.

๋จ์ง ์ฐธ๊ณผ ๊ฑฐ์ง์ด ์๋, ์ฌ๋ฌ ์ํฉ์ ๋ฐ๋ผ ์คํํ code block์ ๊ฒฐ์ ํ๋ ์กฐ๊ฑด๋ฌธ์ด๋ค.
์ฃผ์ด์ง ํํ์์ ํ๊ฐํ ๋ค, ๊ทธ ๊ฐ๊ณผ ์ผ์นํ๋ ํํ์์ ๊ฐ์ง case ๋ฌธ์ผ๋ก ์คํ ํ๋ฆ์ ์ฎ๊ธด๋ค.
์ด๋ ํํ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ ์ฃผ๋ก boolean ํ์ ์ด ์๋, ๋ฌธ์์ด๊ณผ ์ซ์๊ฐ์ด๋ค.
์ํฉ์ ์๋ฏธํ๋ ํํ์์ ์ง์ ํ๊ณ , ๊ทธ ๋ค์ ์คํ๋ฌธ์ ์์น์ํจ๋ค.
๋ง์ฝ switch๋ฌธ์ ํํ์๊ณผ ์ผ์นํ๋ case๋ฌธ์ด ์์ผ๋ฉด, default ๋ฌธ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์ข ๋ฃํ๋ค.
์ง๊ธ๊น์ง ์ฐ๋ฆฌ๊ฐ ์๋๋๋ก switch ๋ฌธ์ ๊ตฌ์ฑํด๋ณด์๋ค.


case๋ ์ ๋๋ ๋์๊ณ , ์คํ๋ฌธ๋ ๊ฐ์ ์ ์์น์์ผ๋์ง๋ง, ์ด ์ฝ๋๋ ์๊ฐ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋์ํ๋ค.
์ผ์นํ๋ case๋ฌธ์ ๋ฐ๊ฒฌํ์ผ๋ฉด, ํด๋น ์คํ๋ฌธ์ ์คํํ ๋ค, default๋ฌธ์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์ข ๋ฃํ๋ค๊ณ ํ๋ค.
๊ทธ๋ฌ๋ ์์ ์ฝ๋์์๋, case 11์ ์คํ๋ฌธ์ ์คํํ๊ณ ๋ case 12๊น์ง ๋ชจ๋ ์คํํ ๋ค์ ์ข ๋ฃ๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ fall through๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด๋ break๋ก ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.


(default๋ฌธ์ ์ ์ง ์์ ์ฝ๋์ด๋ฉฐ, ์ด๋ ์ ํ์ฌํญ์ด๋ค.)
๊ฐ case์ ์คํ๋ฌธ ๋์ break๋ฅผ ๋ถ์ฌ์ค๋ค.
์ด์ ์์๋๋ก ์๋ํ๋ค!
default๋ฌธ์๋ break๋ฅผ ๋ถ์ด์ง ์์๋ ์ข๋ค.
์๊ฐ์ ํด๋ณด๋ฉด, default๋ฅผ ์คํํ ๋ค์๋ ์ด์ฐจํผ switch๋ฌธ์ด ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์, ๊ตณ์ด ์ ์ง ์์๋ ๋ฌธ์ ์์ง ์ฝ๋๊ฐ ์ ์คํ๋๊ณ ์ข ๋ฃ๋๋ ๊ฒ์ ์ ์ ์๋ค.
if...else, switch ๋ ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํด๋ ์๊ด์ด ์๋ ์ํฉ์๋, ๋๋๋ก์ด๋ฉด if...else ๋ฌธ์ ์ฌ์ฉํ๋๋ก ํ์.
๋ฐ๋ณต๋ฌธ์ด๋, ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง code block์ ์คํํ๋ ์ ์ด๋ฌธ์ ๋งํ๋ค.
์คํ๋ฌธ์ ํ๋ฒ ์คํํ ๋ค์, ๋ค์ ์กฐ๊ฑด์์ ํ๊ฐํด ํด๋น ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ผ ๋๊น์ง ์คํ์ ๋ฐ๋ณตํ๋ค.
JavaScript์ ๋ฐ๋ณต๋ฌธ์ผ๋ก๋ for, while, do...while ๋ฌธ์ด ์๋ค.
์ฐจ๋ก๋ก ์ดํด๋ณด์.
C์ธ์ด์์์ for๋ฌธ๊ณผ ๋ค๋ฅผ ๋ฐ ์๋ ํํ์ด์ง๋ง,
JavaScript์ ํ๋ก๊ทธ๋๋ฐ์์ for๋ฌธ์ ๋งค์ฐ ์ค์ํ๋ค!
๊ทธ๋ฌ๋ ์ฝ๋๋ง ํ ๋ฒ ๋ณด๊ณ ๋์ด๊ฐ์.


๋ฐ๋ณต ํ์๊ฐ ๋ถ๋ช ํํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
๋ฌดํ loop์ผ๋ก ๋ง๋ค์ด๋๊ณ , ํ์ถ ์กฐ๊ฑด์ if๋ฌธ์ผ๋ก ๋ง๋ค์ด break๋ฅผ ์ฌ์ฉํด ํ์ถํ๋๋ก ํ๋ค.


while๋ฌธ์ ๋ค๋ฅธ ๋ฒ์ ์ด๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
๋ค๋ง ์กฐ๊ฑด๋ฌธ์ ์์น๊ฐ ๋ค๋ฅด๋ค.


while ๋ฌธ์ ๊ฒฝ์ฐ, ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ฌํ๊ณ , ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง ๋ฌธ ๋ด๋ก ์ง์ ํ๋ค.
ํ์ง๋ง do...while๋ฌธ์ ๊ฒฝ์ฐ, ์กฐ๊ฑด๋ฌธ์ด ์คํ๋ฌธ ๋ค์ ์์นํ๊ธฐ ๋๋ฌธ์, ์ฐธ์ด๋ ๊ฑฐ์ง์ด๋
code block์ ์คํ์ํจ๋ค.
๊ทธ๋ฐ ๋ค์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ , ๊ทธ ๋๋ถํฐ ์ฐธ์ธ ๋์์ ๋ฐ๋ณต, ๊ฑฐ์ง์ด๋ฉด ์ข ๋ฃํ๋ค.
code block์์ ํ์ถํ ๋ ์ฌ์ฉํ๋ ์ ์ด๋ฌธ์ด๋ค.
label๋ฌธ, ๋ฐ๋ณต๋ฌธ, ๊ทธ๋ฆฌ๊ณ switch ๋ฌธ์์ ์ฌ์ฉํ๊ณ , ์ด ์ธ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด SyntaxError๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ณต๋ฌธ์ code block ์คํ์ด continue๋ฅผ ๋ง๋๋ฉด, ํด๋น ์ง์ ์์ ์ค๋จ๋๋ค.
๊ทธ ์ดํ ๋ฐ๋ณต๋ฌธ์ ์ฆ๊ฐ์์ผ๋ก ์คํ ํ๋ฆ์ ์ด๋์ํจ๋ค.
์ฌ์ค ์ด๋ ๊ฒ ํ๋ฆ์ ์ธ์์ ์ผ๋ก ์ ์ดํ๋ค ๋ณด๋ฉด, ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
JavaScript์์๋ forEach, map, filter, reduce ๊ฐ์ ๊ณ ์ฐจ ํจ์๋ฅผ ์ ๊ณตํ๋๋ฐ,
์ด๋ค์ ์ฌ์ฉํ๋ฉด ์ ์ด๋ฌธ์ ์ต์ ํด ๋ณต์ก์ฑ์ ํด๊ฒฐํ ์ ์๋ค๊ณ ํ๋ค.
์ ์ด๋ฌธ์ ํด๋น ์์ ์์ ๊ฐ์ด ๊ณต๋ถ ์ค์ธ C์ธ์ด์ ๋ฌธ๋ฒ๊ณผ ๋ค๋ฅธ ๊ฒ์ด ์์ด์, ์ด๋ ค์ด ๊ฒ๋ ์๋ก์ด ๊ฒ๋ ์์ด ๊ทธ๋ฅ ๋ฌด๋ํ๊ฒ ์ ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค.
๋ค์ ๊ธ์์๋ ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ์ ๋ํด ์ ๋ฆฌ๋ฅผ ํ๊ฒ ๋ ๊ฒ ๊ฐ์๋ฐ,
ํด๋น ๋ด์ฉ์ ๋ํด์๋ ์๋ ๊ฒ ๊ฑฐ์ ์์ด์ ๊ฑฑ์ ๋๊ธฐ๋ ํ๊ณ ๊ธฐ๋๋๋ค!