์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํ(์กฐ๊ฑด๋ฌธ)ํ๊ฑฐ๋ ๋ฐ๋ณต์คํ(๋ฐ๋ณต๋ฌธ)ํ ๋ ์ฌ์ฉํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ ์์์ ์๋ ๋ฐฉํฅ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์คํํ๋๋ฐ, ์ ์ด๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ์คํํ๋ฆ์ ๊ฐ์ ๋ก ์ ์ดํ ์ ์๋ค.
- ๊ฐ๋
์ฑ ๋จ์ด์ง
- ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์ ์ด๋ฌธ ๋ณด๋ค๋ forEach, map, filter, reduce๊ฐ์ ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ์.
0๊ฐ ์ด์์ ๋ฌธ์ ์ค๊ดํธ๋ก ๋ฌถ์ ๊ฒ (์ฝ๋ ๋ธ๋ก ๋๋ ๋ธ๋ก)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ธ๋ก๋ฌธ์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ ์ ์ด๋ฌธ, ํจ์์ ์ํ ๋ ์ฌ์ฉํ๋๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ก๋ฌธ์ ํ๋์ ์คํ๋จ์๋ก ์ทจ๊ธํจ
- ๋ธ๋ก๋ฌธ์ ๋ฌธ์ ์ข ๋ฃ๋ฅผ ์๋ฏธํ๋ ์์ฒด์ข ๊ฒฐ์ฑ์ ๊ฐ๊ธฐ๋๋ฌธ์ ๋ธ๋ก๋ฌธ์ ๋์๋ ์ธ๋ฏธ์ฝ๋ก ์ด ๋ถ์ง์๋๋ค.
์ฃผ์ด์ง ์กฐ๊ฑด์ conditional expression์ ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก(๋ธ๋ก๋ฌธ)์ ์คํ์ ๊ฒฐ์ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ifโฆelse ๋ฌธ๊ณผ switch๋ฌธ์ผ๋ก ๋๊ฐ์ง ์กฐ๊ฑด๋ฌธ์ ์ ๊ณตํ๋ค.
์กฐ๊ฑด์์ ํ๊ฐ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์คํํ ์ฝ๋๋ธ๋ก์ ๊ฒฐ์ ํ๋ค.
-
์กฐ๊ฑด์: ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ํํ์
- if ๋ฌธ์ ์กฐ๊ฑด์ ํ๊ฐ๊ฐ ๋ถ๋ฆฌ์ธ๊ฐ์ด ์๋ ๊ฐ์ด๋ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๊ฐ์ ๋ณํ๋๋ค.
-
ํ๊ฐ๊ฒฐ๊ณผ: ๋ ผ๋ฆฌ์ ์ฐธ ๋๋ ๊ฑฐ์ง
-
์กฐ๊ฑด์์ ํ๊ฐ๊ฒฐ๊ณผ๊ฐ true์ด๋ฉด if๋ฌธ์ ์ฝ๋ ๋ธ๋ก ์คํ, false์ด๋ฉด else๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋๋ค.
-
else if ์กฐ๊ฑด์ ์ถ๊ฐ
-
์ฉ๋
- ์กฐ๊ฑด์์ด ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ํ๊ฐ๋์ด์ผํจ
- ๋ ผ๋ฆฌ์ ์ฐธ, ๊ฑฐ์ง์ผ๋ก ์คํํ ์ฝ๋ ๋ธ๋ก์ ๊ฒฐ์ ํ๋ค.
์ฃผ์ด์ง ํํ์์ ํ๊ฐํ์ฌ ๊ทธ ๊ฐ๊ณผ ์ผ์นํ๋ ํํ์์ ๊ฐ๋ 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๋ฌธ์ด ํ์์๋ค.
- ํด์ค๋ฃจ fall through : break๋ฌธ์ด ์์ผ๋ฉด?
์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๊ฒฝ์ฐ ์ฝ๋ ๋ธ๋ก์ ์คํํ๋ค. โ ๋ค์ ์กฐ๊ฑด์ ํ๊ฐํ์ฌ ์ฐธ์ด๋ฉด ์ฝ๋๋ธ๋ก ๋ค์ ์คํ โ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ๋๊น์ง ๋ฌดํ๋ฐ๋ณต
for ๋ฌธ, while ๋ฌธ, do โฆ while ๋ฌธ
๐ก < ๋ฐ๋ณต๋ฌธ ๋์ฒดํ ์ ์๋ ๊ธฐ๋ฅ๋ค > - ๋ฐฐ์ด ์ํ forEach ๋ฉ์๋ - ๊ฐ์ฒด์ ํ๋กํผํฐ ์ด๊ฑฐ for โฆ in ๋ฌธ - ์ดํฐ๋ฌ๋ธ ์ํ for โฆ of ๋ฌธ์กฐ๊ฑด์์ด false๋ก ํ๊ฐ๋ ๋๊น์ง ์ฝ๋๋ธ๋ก์ ๋ฐ๋ณต ์คํ ํ๋ค.
for (๋ณ์ ์ ์ธ๋ฌธ ๋๋ ํ ๋น๋ฌธ; ์กฐ๊ฑด์; ์ฆ๊ฐ์) {
์กฐ๊ฑด์์ด ์ฐธ์ธ ๊ฒฝ์ฐ ๋ฐ๋ณต ์คํ๋ ๋ฌธ;
}- for๋ฌธ์ ๋ณ์ ์ ์ธ๋ฌธ, ์กฐ๊ฑด์, ์ฆ๊ฐ์์ ๋ชจ๋ ์ต์ ์ด๋ค! ๋ง์ฝ, ์ด๋ค ์๋ ์ ์ธํ์ง์์ผ๋ฉด ๋ฌดํ๋ฃจํ(์ฝ๋๋ธ๋ก์ ๋ฌดํํ ๋ฐ๋ณต์คํ)๊ฐ ๋๋ค.
for (;;) { ... } // ๋ฌดํ๋ฃจํ- for๋ฌธ์ ์ค์ฒฉํด์ ์ฌ์ฉํ ์ ์๋ค. (์ค์ฒฉ for๋ฌธ)
์กฐ๊ฑด์์ด false๋ก ํ๊ฐ๋ ๋๊น์ง ์ฝ๋๋ธ๋ก์ ๋ฐ๋ณต ์คํํ๋ค.
for๋ฌธ์ ๋ฐ๋ณตํ์๊ฐ ๋ช ํํ ๋ ์ฌ์ฉํ๊ณ while๋ฌธ์ ๋ฐ๋ณตํ์๊ฐ ๋ถ๋ช ํํ ๋ ์ฌ์ฉํ๋ค
์กฐ๊ฑด์์ ํ๊ฐ๊ฒฐ๊ณผ๊ฐ ๋ถ๋ฆฌ์ธ๊ฐ์ด ์๋๋ฉด ๋ถ๋ฆฌ์ธ๊ฐ์ผ๋ก ๊ฐ์ ๋ณํํ์ฌ ๋ ผ๋ฆฌ์ ์ฐธ, ๊ฑฐ์ง์ ๊ตฌ๋ณํ๋ค.
while(true) { ... }//๋ฌดํ๋ฃจํ์ฝ๋ ๋ธ๋ก์ ๋จผ์ ์คํ(do)ํ๊ณ ์กฐ๊ฑด์์ ํ๊ฐํ๋ค.
์ฝ๋ ๋ธ๋ก์ ๋ฌด์กฐ๊ฑด ํ ๋ฒ ์ด์ ์คํ๋จ
break๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ ํ์ถํ๋ค.
- ๋ ์ด๋ธ ๋ฌธ, ๋ฐ๋ณต๋ฌธ, switch ๋ฌธ์ ์ฝ๋๋ธ๋ก์ ํ์ถํ๋ค.
- ๋ ์ด๋ธ ๋ฌธ, ๋ฐ๋ณต๋ฌธ, switch ๋ฌธ ์ฝ๋๋ธ๋ก ์ธ์ break๋ฌธ์ ์ฌ์ฉํ๋ฉด SyntaxError(๋ฌธ๋ฒ์๋ฌ)๋ฐ์ํ๋ค.
ํ๋ก๊ทธ๋จ์ ์คํ์์๋ฅผ ์ ์ดํ๋๋ฐ ์ฌ์ฉํ๋ค.
switch๋ฌธ์ case๋ฌธ๊ณผ default๋ฌธ๋ ๋ ์ด๋ธ๋ฌธ์ด๋ค.
๋ ์ด๋ธ ๋ฌธ์ ํ์ถํ๋ ค๋ฉด break๋ฌธ์ ๋ ์ด๋ธ ์๋ณ์๋ฅผ ์ง์ ํ๋ค.
foo: console.log('foo'); // foo๋ผ๋ ๋ ์ด๋ธ ์๋ณ์๊ฐ ๋ถ์ ๋ ์ด๋ธ ๋ฌธ-
์ค์ฒฉ for๋ฌธ์์ ํ์ถ
- ๋ด๋ถ for๋ฌธ ํ์ถํ๋ ค๋ฉด break๋ฌธ
- ์ธ๋ถ for๋ฌธ ํ์ถํ๋ ค๋ฉด break๋ ์ด๋ธ๋ฌธ
-
break๋ฌธ์ ๋ ์ด๋ธ ๋ฌธ์ด ์๋๋ผ, ๋ฐ๋ณต๋ฌธ switch๋ฌธ์์ ์ฌ์ฉ๋๋ฉด break๋ฌธ์ ๋ ์ด๋ธ ์๋ณ์๋ฅผ ์ง์ ํ์ง์๋๋ค.
-
์ฉ๋
- ๋ ์ด๋ธ๋ฌธ์ ์ค์ฒฉ๋ for๋ฌธ ์ธ๋ถ๋ก ํ์ถํ ๋ ์ ์ฉํ์ง๋ง ๊ทธ๋ฐ์ ๊ฒฝ์ฐ์๋ ๊ถ์ฅํ์ง์๋๋ค.
- ๋ ์ด๋ธ ๋ฌธ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ ์ฑ์ด ์์ข์
๋ฐ๋ณต๋ฌธ์ ์ฝ๋ ๋ธ๋ก ์คํ์ ํ ์ง์ ์์ ์ค๋จํ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ฆ๊ฐ์์ผ๋ก ์คํ ํ๋ฆ์ ์ด๋์ํจ๋ค.
break๋ฌธ์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ ํ์ถํ์ง๋ ์๋๋ค.