โœŠ ํ•„์˜ค์˜ ๊ฐœ๋ฐœ์ผ์ง€
Back to Posts
2019๋…„ 2์›” 3์ผ

CodeSpitz77 2ํšŒ_Flow control statement (1)

CodeSpitz77 2ํšŒ_Flow control statement (1)

๐ŸŒ•๐ŸŒ‘๐ŸŒ‘

์ฝ”๋“œ์Šคํ”ผ์ธ  ๊ฐ•์˜ ์ •๋ฆฌ๋ก


๋ณต์Šต

Flow๋ž€? ์šฐ๋ฆฌ๊ฐ€ ์ง  ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ , ์ ์žฌ๋œ ์ˆœ๊ฐ„, ๋ช…๋ น๊ณผ ๋ฐ์ดํ„ฐ๋กœ ๋‚˜๋ˆ ์ ธ์„œ ์ ์žฌ๋œ ๋‹ค์Œ์— ๋ช…๋ น์ด ์ญ‰ ํ•œ๊บผ๋ฒˆ์— ์‹คํ–‰๋˜๋Š”๋ฐ, ๋ช…๋ น์ด ์ฐจ๊ทผ์ฐจ๊ทผ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •.



0. Record, Completion Record ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์„ ์•Œ์•„๋ณด์ž.


0.1 Record

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฌธ์„ ์ฒ˜๋ฆฌํ• ๋•Œ ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์‹์€ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋  ๋ฟ์ด์ง€๋งŒ, ๋ฌธ์€ ์‹คํ–‰๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋ฌธ์„ 10๊ฐœ ์“ฐ๋ฉด, 10๊ฐœ์˜ ์‹คํ–‰๋‹จ์œ„๊ฐ€ ์ƒ๊ฐ๋‚œ๋‹ค. (์‹์€ 10๊ฐœ ์จ๋„, ๊ฐ’ ํ•˜๋‚˜๋กœ ์ˆ˜๋ ด๋  ๋ฟ์ด๋‹ค.) ๋ฌธ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๊ฐฏ์ˆ˜๋งŒํผ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๊ณผ์ œ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ํ•œ์ค„ํ•œ์ค„์˜ ๋ฌธ์ด ์ƒ๊ธธ๋•Œ ๋งˆ๋‹ค ๊ณผ์ œ๋กœ ๋“ฑ๋กํ•ด ๋†“๋Š”๋‹ค. => Record

์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์„ ์งœ๋ฉด Record ํ•˜๋‚˜ํ•˜๋‚˜๋กœ ๋ฒˆ์—ญ์ด ๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์šฐ๋ฆฌ๊ฐ€ ์ง  ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ• ๋•Œ ๋ฌธ๋“ค์„ Record๋‹จ์œ„๋กœ ํŒŒ์‹ฑํ•œ๋‹ค. Record๊ฐ€ ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ์„ฑ์ด๋˜๋ฉด flow๋ฅผ ํƒ€๊ณ  ์ญ‰ ์›€์ง์ธ๋‹ค.

Record๋ฅผ ๋งŒ๋“ค๊ณ  Record๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ฃผ ์ž‘๋™์›๋ฆฌ์ด๋‹ค.

์š”์ฆ˜ ํ˜„๋Œ€ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 3.1์—”์ง„์—์„œ ๋Œ์ง€ ์•Š๋Š”๋‹ค. (์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งํ•˜๋‹ค์™€ ๊ฐ™์€ ์ฑ…๋“ค์€ ์ข‹์ง€๋งŒ, ์ž‘๋™์›๋ฆฌ๋Š” ํ˜„๋Œ€ ๋ธŒ๋ผ์šฐ์ €์™€ ๋‹ค๋ฅด๋‹ค. (3.1๋ฒ„์ „ ์—”์ง„๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…๋œ ์ฑ…)) ๋ชจ๋“  ํ•ญ๋ชฉ์— ์žˆ์–ด์„œ ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์กŒ๋‹ค. ์ŠคํŽ™๋ฌธ์„œ๋„ ๋‹ฌ๋ผ์ง. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ž‘๋™์›๋ฆฌ๋ฅผ ์ง€๊ธˆ ๋ฒ„์ „์—์„œ ๋ฐฐ์›Œ๋„, ๋งค๋…„ ์ŠคํŽ™์ด ๊ฐฑ์‹ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋˜ ์ง€์‹์ด ๋‹ค์Œํ•ด์—๋Š” ๋ฌด์˜๋ฏธํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์ €์ธต์˜ ์ž‘๋™์›๋ฆฌ๋ณด๋‹ค๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๊ณ  ์ถ”์ƒ์ ์ธ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ธ์ง€ ์ฒด๊ณ„๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ๋” ์˜๋ฏธ์žˆ๋‹ค.. = ์ž‘๋™์›๋ฆฌ๋ณด๋‹ค๋Š” ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ๋ฐฐ์šฐ์ž.

์ •๋ฆฌ


0.2 Flow Control Statement, Completion record if๋ฌธ์ด๋ผ์„œ ๋ถ„๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋˜์ง€, loop๊ตฌ๋ถ„์ด๋ผ์„œ

๊ณ„์† flow๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” flow ์ œ์–ด๋ฅผ ํ•˜๋ฉด ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆœํ™˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

flow ์ œ์–ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„ record๋กœ ๋ฐ”๊ฟ€๋•Œ๋Š” Completion record๋กœ ๋ฐ”๋€๋‹ค. completion record์€ record๋ฅผ ๋ญ˜ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ flow์— ๊ด€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„ Record์™€ Completion record๋กœ ๋‚˜๋ˆ„๊ณ , Completion record๋“ค์ด ์–ด๋–ค ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ ํƒํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

์ •๋ฆฌ

  1. ์šฐ๋ฆฌ๊ฐ€ ์งœ๋Š” ๋ฌธ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ flow๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
  2. flow controlํ•˜๋Š” ๋ฌธ๋“ค์€ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.


1. Direct flow control ์ง์ ‘ flow controlํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฐฐ์›Œ๋ณด์ž.

1.1 label ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง์ ‘ flow control์—๋Š”

labelย ์ด ์žˆ๋‹ค. - ๋‹ค์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐ”๊นฅ์ชฝ for๋ฌธ์œผ๋กœ ๋น ์ ธ๋‚˜์˜ค๊ณ  ์‹ถ์œผ๋ฉด, break๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

1.1.1 Identifier (= ์‹๋ณ„์ž)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ identifier A JavaScript identifier must start with a letter, underscore (_), or dollar sign ($); subsequent characters can also be digits (0-9). Because JavaScript is case sensitive, letters include the characters โ€œAโ€ through โ€œZโ€ (uppercase) and the characters โ€œaโ€ through โ€œzโ€ (lowercase). (์ฐธ๊ณ ย )


1.1.2 Scope - label์˜ ์ด๋ฆ„์€ ๊ฐ™์€ ๋ฒ”์œ„(scope)๋‚ด์—์„œ 2๊ฐœ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋‹ค. - ๋Ÿฐํƒ€์ž„์— ์˜ค๋ฅ˜๊ฐ€

์žกํžˆ์ง€ ์•Š๊ณ  ํŒŒ์‹ฑํ•˜๋Š” ํƒ€์ž„์— ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. - ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ์žก์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

Label์˜ scope?

<script> abc: { console.log("start"); if (true) break; console.log("end"); } </script>

Uncaught SyntaxError: Illegal break statement

<script> abc: { console.log('start'); if (true) break abc; console.log('end'); } console.log('test'); </script>

start test

label ์˜์—ญ์ด ์•„๋‹Œ๊ณณ๋„ ๋ ๊นŒ? label ์˜์—ญ์ด ์•„๋Š”๊ณณ์—์„œ ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด label ์˜์—ญ์„ ๋‚˜๋ˆ ์ค˜์•ผํ•œ๋‹ค.


1.1.3 Label range - label range๋ฅผ ์ธ์‹ํ•˜๋ ค๋ฉด label set์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. - ์–ด๋–ป๊ฒŒ ํ•ด์„œ

label์ด label์˜์—ญ์„ ํ™•๋ณดํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. 1. ์ด label์—์„œ ๋‹ค์Œ label๊นŒ์ง€๊ฐ€ ํ•˜๋‚˜์˜ label range๋ฅผ ์ด๋ฃฌ๋‹ค. 2. label๋‹ค์Œ์— iteration์ด ์˜ค๊ฑฐ๋‚˜, switch๊ฐ€ ์˜ค๋ฉด ์ด๊ฒƒ๋“ค์ด ๋‹ค์‹œ label ๋ฒ”์œ„๋ฅผ ํ•œ์ •์ง“๊ฒŒ ๋œ๋‹ค.

<script> console.log('0'); abc: if (true) break abc; console.log('1'); bbb: console.log('2'); </script>

0 1 2

<script> for (var i = 0; i < 10; i++) { if (i === 5) break; } console.log('end'); </script>

์™œ error๊ฐ€ ์•„๋‹๊นŒ?


1.1.4 Auto label

<script> temp38: for (var i = 0; i < 10; i++) { if (i === 5) break temp38; } console.log("end"); </script>
cf__1 ์ฃผ์„์„ ๊นจ๋—ํ•˜๊ฒŒ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด?
ab: console.log('123'); cd: console.log('123'); dc: console.log('123');

1.1.5 label์€ ํ˜ธ์ถœ๋์„ ๋•Œ ์ฒ˜์Œ์œผ๋กœ๊ฐ€๋‚˜์š”? jump๊ตฌ๋ฌธ์€ jump๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์žฅ ๋ธ”๋Ÿญ์˜ ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ

๊ฐ€๊ฒŒ ๋˜์–ด์žˆ๋‹ค. - for๋ฌธ์ด ๋ฃจํ”„๋Œ๋ฉด, ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ ๊ฐ„๋‹ค. - ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ ๊ฐ„๋‹ค. ํ•˜์ง€๋งŒ break์˜ label๋ฅผ ๋ณธ๋‹ค๋ฉด.. ์ฒ˜์Œ์œผ๋กœ ๊ฐ€์•ผํ•˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€?? - break์˜ label์€ ๋ธ”๋Ÿญ์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด๋‚ธ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ label ์ŠคํŽ™์€ ์ž๋ฐ”์˜ label ์ŠคํŽ™๊ณผ ๋™์ผํžˆ๋‹ค ๋ ˆ์ด๋ธ”์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ 3.1๋ฒ„์ „๋•Œ๋ถ€ํ„ฐ ์žˆ์—ˆ๋˜ ์ŠคํŽ™


1.2 Switch switch์˜ ๋ฌธ๋ฒ•์  ์š”์†Œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž. - switch๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋‚˜์˜ค๊ณ  - ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๊ณ  -

๊ด„ํ˜ธ ์•ˆ์— ์‹์ด๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ , - ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜จ๋‹ค. - for๋ฌธ ๋‹ค์Œ์— ๊ด„ํ˜ธ๋Š” ๋‹จ๋ฌธ์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ณ  ์ค‘๋ฌธ์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ค‘๋ฌธ๋•Œ๋ฌธ์— ์ค‘๊ด„ํ˜ธ๋ฅผ ์“ด๋‹ค. - switch๋ฌธ์€ ๊ทธ๋Ÿด ์ˆ˜ ์—†๋‹ค. ๋ฌด์กฐ๊ฑด ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™€์•ผํ•œ๋‹ค. - ๋ฌธ๋ฒ•์ ์ธ ํ† ํฐ์ด๋ผ๋Š” ๋œป์ด๋‹ค. - switch์˜ ๋ชธ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ „์šฉ ํ† ํฐ. - ์–ธ์–ด ํŒŒ์„œ๊ฐ€ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ์œผ๋กœ์„œ์˜ ์ค‘๊ด„ํ˜ธ์ด๋‹ค. - ์™œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์“ธ๊นŒ. switch๋Š” ์ค‘๊ด„ํ˜ธ์˜ ์˜์—ญ์„ ํŠน๋ณ„ํ•œ ์˜์—ญ์œผ๋กœ ๋งŒ๋“ ๋‹ค. special label block์œผ๋กœ ๋งŒ๋“ ๋‹ค. 1. case 2. ์‹ 3. ์ฝœ๋ก  :

1.2.1 Special label Block switch๋Š” ํŠน๋ณ„ํ•œ ๋ ˆ์ด๋ธ” ์˜์—ญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ฃผ๋Š”

๋ฌธ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๋œ๋‹ค. - label๊ณผ ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋‹ค. - ์ปดํŒŒ์ผํƒ€์ž„์— ํ•ด์„๋˜๋Š” ์ •์ ์ธ ๋ ˆ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ case ์•ˆ์˜ ์‹์„ ๋™์ ์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ๋ ˆ์ด๋ธ”๋กœ ๋งŒ๋“ค์—ˆ์„ ๋ฟ์ด๋‹ค. - switch๋Š” case์™€ default label๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์šฐ๋ฆฌ๋Š” switch ๊ด„ํ˜ธ์•ˆ์— ์žˆ๋Š” ๊ฐ’์˜ ํ‰๊ฐ€๋œ ๊ฒƒ์„ ๋Ÿฐํƒ€์ž„์— ํ‰๊ฐ€ํ•ด์„œ case์— ์žˆ๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” label๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ๋ ˆ์ด๋ธ” ๊ตฌ๋ฌธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” switch๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์•ˆ์— ์žˆ๋Š” label์€ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” label๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

1.2.2 Fall Through case๋ฌธ ์•ˆ์—์„œ break๋ฅผ ์•ˆ์“ฐ๋ฉด ๊ทธ ๋‹ค์Œ case๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ํ˜„์ƒ - break๋ฅผ ๊ฑธ๋ฉด,

undefined name label๋กœ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. - switch๋ฌธ ์•ž์— auto label์„ ๋งŒ๋“ ๋‹ค.

1.2.3 Auto Label

<script> switch (true) { default: console.log("c"); case true: console.log("0"); case false: console.log("1"); } </script>

์–ธ์–ด๋งˆ๋‹ค ์ŠคํŽ˜์…œ label block ํ•ด์„ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค.

<script> temp17: switch (true) { default: console.log('c'); case true: console.log('0'); break temp17; case false: console.log('1'); } console.log('end'); </script>

1.2.4 Runtime switch ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— case๋ฌธ์€ runtime์— ํ•ด์„์„ ํ•œ๋‹ค. - runtime์— ํ•ด์„ํ•˜๋Š”

๊ธฐ๋Šฅ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ switch๋ฌธ์„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค.

  1. ๊ฐ’์— ๋Œ€ํ•œ routing์œผ๋กœ (mini router) ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ routing table
  2. ์กฐ๊ฑด ํ‰๊ฐ€์— ๋Œ€ํ•œ ๋ถ„๊ธฐ

๊ฐ’์— ๋Œ€ํ•œ routing์ด ์ •์ ์ธ ๊ฒฝ์šฐ ๊ฐ’์— ๋Œ€ํ•œ routing์— ๋” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

<script> // 1. mini router var a = true; switch (a) { default: console.log('c'); case true: console.log('0'); break; case false: console.log('1'); } console.log('end'); // 2. ์กฐ๊ฑด ํ‰๊ฐ€์— ๋Œ€ํ•œ ๋ถ„๊ธฐ // ๋””์ž์ธํŒจํ„ด chianable responsibility ํŒจํ„ด switch (true) { case network() === 'online': case network() === 'wifi': case network() === 'offline': case localcache(): default: // ์•ˆ๋‚ด๋ฌธ.. } </script>

1.2.5 Reverse case switch๊ตฌ๋ฌธ์ด runtime์— ํ•ด์„๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋ญ๋ƒ? ํ•œ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. -

switch๋ฌธ์„ ๋ผ์šฐํ„ฐ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋ผ์šฐํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํ•จ์ˆ˜๊ฐ€ ๊ฐœ์ž…๋˜๊ฑฐ๋‚˜, ์ฆ๊ฐํ˜„์ƒ์ฒ˜๋Ÿผ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ํ•ญ์ƒ ์ฃผ์˜ํ•ด์„œ ์จ์•ผํ•œ๋‹ค. - runtime์—์„œ switch๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ชจ๋“  ์–ธ์–ด์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. - python, ruby, javaScript - ์œ ์˜๊นŠ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.

Previous์ฝ”๋“œ์Šคํ”ผ์ธ 80_OOP design with game (1)- 1. ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ๊ฐ’์ง€ํ–ฅ
NextCodeSpitz77 2ํšŒ_Flow control statement (2)

Related

ยฉ 2025 Felix