๐Ÿธ [JavaScript] ์ œ์–ด๋ฌธ

hnyoojinยท2024๋…„ 8์›” 30์ผ

๐Ÿธ JS ๋งˆ์Šคํ„ฐ ๋˜๊ธฐ

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

JavaScript์˜ ์ œ์–ด๋ฌธ์ธ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!


์ œ์–ด๋ฌธ control flow statement

์ œ์–ด๋ฌธ์ด๋ž€, ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ code block์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ๋ฆ„์„ ์ธ์œ„์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋”ฉ ์Šคํ‚ฌ์— ๋งค์šฐ ์ค‘์š”ํ•œ ๋ฌธ๋ฒ•์ด๋‹ค!



๋ธ”๋ก๋ฌธ

block/compound statement ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

0๊ฐœ ์ด์ƒ์˜ statement๋ฅผ {} ๋กœ ๋ฌถ์€๊ฒƒ์„ ๋งํ•˜๊ณ , ์ด๋ฅผ code block ์ด๋ผ๊ณ  ํ•œ๋‹ค.

JavaScript์—์„œ๋Š” ๋ธ”๋ก๋ฌธ์„ ํ•˜๋‚˜์˜ ์‹คํ–‰๋‹จ์œ„๋กœ ์ทจ๊ธ‰ํ•˜๋Š”๋ฐ,

์ œ์–ด๋ฌธ์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


์กฐ๊ฑด๋ฌธ conditional statement

JavaScript์˜ ์กฐ๊ฑด๋ฌธ์ธ if...else ๋ฌธ๊ณผ switch ๋ฌธ์„ ์ฐจ๋ก€๋กœ ์•Œ์•„๋ณด์ž.

if...else ๋ฌธ

์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true/false ์ฆ‰, boolean ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด๋‹ค.

์ด๋•Œ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ๊ฐ€ boolean ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ๋ฉด, boolean ํƒ€์ž…์œผ๋กœ์˜ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์ด ์ผ์–ด๋‚œ๋‹ค.

๋…ผ๋ฆฌ์ ์ธ ์ฐธ ๊ฑฐ์ง“์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  code block์„ ๊ฒฐ์ •ํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์ด๋‹ค.

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



switch ๋ฌธ

๋‹จ์ง€ ์ฐธ๊ณผ ๊ฑฐ์ง“์ด ์•„๋‹Œ, ์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  code block์„ ๊ฒฐ์ •ํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์ด๋‹ค.

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

์ด๋•Œ ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ์ฃผ๋กœ boolean ํƒ€์ž…์ด ์•„๋‹Œ, ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๊ฐ’์ด๋‹ค.

case ๋ฌธ

์ƒํ™ฉ์„ ์˜๋ฏธํ•˜๋Š” ํ‘œํ˜„์‹์„ ์ง€์ •ํ•˜๊ณ , ๊ทธ ๋’ค์— ์‹คํ–‰๋ฌธ์„ ์œ„์น˜์‹œํ‚จ๋‹ค.

๋งŒ์•ฝ switch๋ฌธ์˜ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” case๋ฌธ์ด ์—†์œผ๋ฉด, default ๋ฌธ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•œ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š”๋Œ€๋กœ switch ๋ฌธ์„ ๊ตฌ์„ฑํ•ด๋ณด์•˜๋‹ค.

case๋„ ์ž˜ ๋‚˜๋ˆ ๋‘์—ˆ๊ณ , ์‹คํ–‰๋ฌธ๋„ ๊ฐ์ž ์ž˜ ์œ„์น˜์‹œ์ผœ๋’€์ง€๋งŒ, ์ด ์ฝ”๋“œ๋Š” ์ƒ๊ฐ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

fall through

์ผ์น˜ํ•˜๋Š” case๋ฌธ์„ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฉด, ํ•ด๋‹น ์‹คํ–‰๋ฌธ์„ ์‹คํ–‰ํ•œ ๋’ค, default๋ฌธ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š”, case 11์˜ ์‹คํ–‰๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ ๋„ case 12๊นŒ์ง€ ๋ชจ๋‘ ์‹คํ–‰ํ•œ ๋’ค์— ์ข…๋ฃŒ๋œ๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ fall through๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ด๋Š” break๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.


(default๋ฌธ์„ ์ ์ง€ ์•Š์€ ์ฝ”๋“œ์ด๋ฉฐ, ์ด๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋‹ค.)

๊ฐ case์˜ ์‹คํ–‰๋ฌธ ๋์— break๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.

์ด์ œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค!

default๋ฌธ์—๋Š” break๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์ข‹๋‹ค.

์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด, default๋ฅผ ์‹คํ–‰ํ•œ ๋’ค์—๋Š” ์–ด์ฐจํ”ผ switch๋ฌธ์ด ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตณ์ด ์ ์ง€ ์•Š์•„๋„ ๋ฌธ์ œ์—†์ง€ ์ฝ”๋“œ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜๊ณ  ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


if...else, switch ๋‘˜ ์ค‘ ์–ด๋А ๊ฒƒ์„ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€์ด ์—†๋Š” ์ƒํ™ฉ์—๋Š”, ๋˜๋„๋ก์ด๋ฉด if...else ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.


๋ฐ˜๋ณต๋ฌธ loop statement

๋ฐ˜๋ณต๋ฌธ์ด๋ž€, ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ code block์„ ์‹คํ–‰ํ•˜๋Š” ์ œ์–ด๋ฌธ์„ ๋งํ•œ๋‹ค.

์‹คํ–‰๋ฌธ์„ ํ•œ๋ฒˆ ์‹คํ–‰ํ•œ ๋‹ค์Œ, ๋‹ค์‹œ ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•ด ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ€ ๊ฑฐ์ง“์ผ ๋•Œ๊นŒ์ง€ ์‹คํ–‰์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

JavaScript์˜ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋Š” for, while, do...while ๋ฌธ์ด ์žˆ๋‹ค.

์ฐจ๋ก€๋กœ ์‚ดํŽด๋ณด์ž.

for๋ฌธ

C์–ธ์–ด์—์„œ์˜ for๋ฌธ๊ณผ ๋‹ค๋ฅผ ๋ฐ” ์—†๋Š” ํ˜•ํƒœ์ด์ง€๋งŒ,

JavaScript์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ for๋ฌธ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค!

๊ทธ๋Ÿฌ๋‹ˆ ์ฝ”๋“œ๋งŒ ํ•œ ๋ฒˆ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€์ž.



while๋ฌธ

๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.

๋ฌดํ•œ loop์œผ๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ , ํƒˆ์ถœ ์กฐ๊ฑด์„ if๋ฌธ์œผ๋กœ ๋งŒ๋“ค์–ด break๋ฅผ ์‚ฌ์šฉํ•ด ํƒˆ์ถœํ•˜๋„๋ก ํ•œ๋‹ค.



do...while๋ฌธ

while๋ฌธ์˜ ๋‹ค๋ฅธ ๋ฒ„์ „์ด๋ผ๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

๋‹ค๋งŒ ์กฐ๊ฑด๋ฌธ์˜ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.

while ๋ฌธ์˜ ๊ฒฝ์šฐ, ์กฐ๊ฑด๋ฌธ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ ๋‚ด๋กœ ์ง„์ž…ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ do...while๋ฌธ์˜ ๊ฒฝ์šฐ, ์กฐ๊ฑด๋ฌธ์ด ์‹คํ–‰๋ฌธ ๋’ค์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฐธ์ด๋“  ๊ฑฐ์ง“์ด๋“ 
code block์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜๊ณ , ๊ทธ ๋•Œ๋ถ€ํ„ฐ ์ฐธ์ธ ๋™์•ˆ์€ ๋ฐ˜๋ณต, ๊ฑฐ์ง“์ด๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.



break ๋ฌธ

code block์—์„œ ํƒˆ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ œ์–ด๋ฌธ์ด๋‹ค.

label๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ๊ทธ๋ฆฌ๊ณ  switch ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ , ์ด ์™ธ์˜ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋ฉด SyntaxError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.



continue๋ฌธ

๋ฐ˜๋ณต๋ฌธ์˜ code block ์‹คํ–‰์ด continue๋ฅผ ๋งŒ๋‚˜๋ฉด, ํ•ด๋‹น ์ง€์ ์—์„œ ์ค‘๋‹จ๋œ๋‹ค.

๊ทธ ์ดํ›„ ๋ฐ˜๋ณต๋ฌธ์˜ ์ฆ๊ฐ์‹์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์ด๋™์‹œํ‚จ๋‹ค.


์—ฌ๋‹ด..

์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ ํ๋ฆ„์„ ์ธ์œ„์ ์œผ๋กœ ์ œ์–ดํ•˜๋‹ค ๋ณด๋ฉด, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

JavaScript์—์„œ๋Š” forEach, map, filter, reduce ๊ฐ™์€ ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ,

์ด๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์ œ์–ด๋ฌธ์„ ์–ต์ œํ•ด ๋ณต์žก์„ฑ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.



์ œ์–ด๋ฌธ์€ ํ•ด๋‹น ์‹œ์ ์—์„œ ๊ฐ™์ด ๊ณต๋ถ€ ์ค‘์ธ C์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ณผ ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†์–ด์„œ, ์–ด๋ ค์šด ๊ฒƒ๋„ ์ƒˆ๋กœ์šด ๊ฒƒ๋„ ์—†์ด ๊ทธ๋ƒฅ ๋ฌด๋‚œํ•˜๊ฒŒ ์ •๋ฆฌ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ,

ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋Š” ๊ฒŒ ๊ฑฐ์˜ ์—†์–ด์„œ ๊ฑฑ์ •๋˜๊ธฐ๋„ ํ•˜๊ณ  ๊ธฐ๋Œ€๋œ๋‹ค!

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