switch๋ฌธ

๋ณต์ˆ˜์˜ if ์กฐ๊ฑด๋ฌธ์€ switch๋ฌธ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

switch๋ฌธ์„ ์‚ฌ์šฉํ•œ ๋น„๊ต๋ฒ•์€ ํŠน์ • ๋ณ€์ˆ˜๋ฅผ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ๋น„๊ต ์ƒํ™ฉ์„ ์ž˜ ์„ค๋ช…ํ•œ๋‹ค๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

switch๋ฌธ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ case๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๊ฐœ default๋ฌธ๋„ ์žˆ์ง€๋งŒ, ์ด๋Š” ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

switch(x) {
  case 'value1':  // if (x === 'value1')
    ...
    [break]

  case 'value2':  // if (x === 'value2')
    ...
    [break]

  default:
    ...
    [break]
}
  • ๋ณ€์ˆ˜ x์˜ ๊ฐ’๊ณผ ์ฒซ ๋ฒˆ์งธ case๋ฌธ์˜ ๊ฐ’ 'value1'๋ฅผ ์ผ์น˜ ๋น„๊ตํ•œ ํ›„, ๋‘ ๋ฒˆ์งธ case๋ฌธ์˜ ๊ฐ’ 'value2'์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ณผ์ •์€ ๊ณ„์† ์ด์–ด์ง‘๋‹ˆ๋‹ค.

  • case๋ฌธ์—์„œ ๋ณ€์ˆ˜ x์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์œผ๋ฉด ํ•ด๋‹น case ๋ฌธ์˜ ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, break๋ฌธ์„ ๋งŒ๋‚˜๊ฑฐ๋‚˜ switch ๋ฌธ์ด ๋๋‚˜๋ฉด ์ฝ”๋“œ์˜ ์‹คํ–‰์€ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

  • ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” case๋ฌธ์ด ์—†๋‹ค๋ฉด, default๋ฌธ ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(default ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ).

์‹ค์ œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ switch๋ฌธ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์—์„  ๊ฐ•์กฐ๋œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

let a = 2 + 2;

switch (a) {
  case 3:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.' );
    break;
  case 4:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.' );
    break;
  case 5:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.' );
    break;
  default:
    alert( "์–ด๋–ค ๊ฐ’์ธ์ง€ ํŒŒ์•…์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." );
}

switch๋ฌธ์€ a์˜ ๊ฐ’์ธ 4์™€ ์ฒซ ๋ฒˆ์งธ case๋ฌธ์˜ ๊ฐ’์ธ 3์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ’์€ ๊ฐ™์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ case๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

a์™€ ๊ทธ๋‹ค์Œ case๋ฌธ์˜ ๊ฐ’์ธ 4๋Š” ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ break๋ฌธ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ case 4 ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

case๋ฌธ ์•ˆ์— break๋ฌธ์ด ์—†์œผ๋ฉด ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ง€์ง€ ์•Š๊ณ  ์ด์–ด์ง€๋Š” case๋ฌธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

break๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค.

let a = 2 + 2;

switch (a) {
  case 3:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.' );
  case 4:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.' );
  case 5:
    alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.' );
  default:
    alert( "์–ด๋–ค ๊ฐ’์ธ์ง€ ํŒŒ์•…์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." );
}

์œ„ ์˜ˆ์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜ 3๊ฐœ์˜ alert๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.' );
alert( '๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.' );
alert( "์–ด๋–ค ๊ฐ’์ธ์ง€ ํŒŒ์•…์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." );

switch/case๋ฌธ์˜ ์ธ์ˆ˜์—” ์–ด๋–ค ํ‘œํ˜„์‹์ด๋“  ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

switch๋ฌธ๊ณผ case๋ฌธ์€ ๋ชจ๋“  ํ˜•ํƒœ์˜ ํ‘œํ˜„์‹์„ ์ธ์ˆ˜๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

let a = "1";
let b = 0;

switch (+a) {
  case b + 1:
    alert("ํ‘œํ˜„์‹ +a๋Š” 1, ํ‘œํ˜„์‹ b+1๋Š” 1์ด๋ฏ€๋กœ ์ด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.");
    break;

  default:
    alert("์ด ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
}

ํ‘œํ˜„์‹ +a๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉด 1์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ์ฒซ ๋ฒˆ์งธ case๋ฌธ์˜ ํ‘œํ˜„์‹ b + 1์„ ํ‰๊ฐ€ํ•œ ๊ฐ’(1)๊ณผ ์ผ์น˜ํ•˜์ฃ . ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ case๋ฌธ ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ case๋ฌธ์€ ํ•œ๋ฐ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

case 3๊ณผ case 5์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค.

let a = 3;

switch (a) {
  case 4:
    alert('๊ณ„์‚ฐ์ด ๋งž์Šต๋‹ˆ๋‹ค!');
    break;

  case 3: // (*) ๋‘ case๋ฌธ์„ ๋ฌถ์Œ
  case 5:
    alert('๊ณ„์‚ฐ์ด ํ‹€๋ฆฝ๋‹ˆ๋‹ค!');
    alert("์ˆ˜ํ•™ ์ˆ˜์—…์„ ๋‹ค์‹œ ๋“ค์–ด๋ณด๋Š”๊ฑธ ๊ถŒ์œ  ๋“œ๋ฆฝ๋‹ˆ๋‹ค.");
    break;

  default:
    alert('๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ƒํ•˜๋„ค์š”.');
}

case 3๊ณผ case 5๋Š” ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

switch/case๋ฌธ์—์„œ break๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ์—” ์กฐ๊ฑด์— ์ƒ๊ด€์—†์ด ๋‹ค์Œ case๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ case 3์ด ์ฐธ์ธ ๊ฒฝ์šฐ์—” (*)๋กœ ํ‘œ์‹œํ•œ ์ค„ ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ, ๊ทธ ์•„๋ž˜ ์ค„์—” case 5๊ฐ€ ์žˆ๊ณ  break๋ฌธ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— 12๋ฒˆ์งธ ์ค„์˜ break๋ฌธ์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋Š” ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

switch๋ฌธ์€ ์ผ์น˜ ๋น„๊ต๋กœ ์กฐ๊ฑด์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ตํ•˜๋ ค๋Š” ๊ฐ’๊ณผ case๋ฌธ์˜ ๊ฐ’์˜ ํ˜•๊ณผ ๊ฐ’์ด ๊ฐ™์•„์•ผ ํ•ด๋‹น case๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด switch๋ฌธ์—์„œ ์ž๋ฃŒํ˜•์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ์‚ดํŽด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

let arg = prompt("๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
switch (arg) {
  case '0':
  case '1':
    alert( '0์ด๋‚˜ 1์„ ์ž…๋ ฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.' );
    break;

  case '2':
    alert( '2๋ฅผ ์ž…๋ ฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.' );
    break;

  case 3:
    alert( '์ด ์ฝ”๋“œ๋Š” ์ ˆ๋Œ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!' );
    break;
  default:
    alert( '์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.' );
}
  1. 0์ด๋‚˜ 1์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ์—” ์ฒซ ๋ฒˆ์งธ alert๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  2. 2๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ์—” ๋‘ ๋ฒˆ์งธ alert๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  3. 3์„ ์ž…๋ ฅํ•˜์˜€๋”๋ผ๋„ ์„ธ ๋ฒˆ์งธ alert๋ฌธ์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋ฐฐ์šด ๋ฐ”์™€ ๊ฐ™์ด prompt ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ํ•„๋“œ์— ๊ธฐ์žฌํ•œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆซ์ž 3์„ ์ž…๋ ฅํ•˜๋”๋ผ๋„ prompt ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด '3'์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„ธ ๋ฒˆ์งธ case๋ฌธ์—์„  ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ์ˆซ์žํ˜• 3์„ ๋น„๊ตํ•˜๋ฏ€๋กœ, ํ˜• ์ž์ฒด๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— case 3 ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ์ ˆ๋Œ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  default๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : Modern Javascript ํŠœํ† ๋ฆฌ์–ผ

Last updated