JavaScript - Switch uslovi


Korištenje switch uslova

Izjava switch..case je alternativa izrazu if..else if...else, što čini gotovo istu stvar. Izjava slučaja switch provjerava varijablu ili izraz na nizu vrijednosti dok ne nađe podudaranje, a zatim izvrši blok koda koji odgovara tom podudaranju. Njegova je sintaksa:

switch(x){
    case value1:
        // Kod će biti izvršen ako je x === value1
        break;
    case value2:
        // Kod će biti izvršen ako je x === value2
        break;
    ...
    default:
        // Kod će biti izvršen ako je x različit od ostalih vrijednosti
}

Pogledajmo sledeći primjer, koji prikazuje nazive dana u nedelji.

var d = new Date();
  
switch(d.getDay()) {
  case 0:
      alert("Danas je nedelja.");
      break;
  case 1:
      alert("Danas je ponedeljak.");
      break;
  case 2:
      alert("Danas je utorak.");
      break;
  case 3:
      alert("Danas je srjeda.");
      break;
  case 4:
      alert("Danas je četvrtak.");
      break;
  case 5:
      alert("Danas je petak.");
      break;
  case 6:
      alert("Danas je subota.");
      break;   
  default:
      alert("nema dostupnih informacija za taj dan.");
      break;
}
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript Switch Case izjave</title>
</head>
<body>
    <script>
    var d = new Date();
  
    switch(d.getDay()) {
        case 0:
            document.write("Danas je nedelja.");
            break;
        case 1:
            document.write("Danas je ponedeljak.");
            break;
        case 2:
            document.write("Danas je strijeda.");
            break;
        case 3:
            document.write("Danas je srijeda.");
            break;
        case 4:
            document.write("Danas je četvrtak.");
            break;
        case 5:
            document.write("Danas je petak.");
            break;
        case 6:
            document.write("Danas je subota.");
            break;   
        default:
            document.write("Za taj dan nisu dostupne informacije.");
            break;
    }
    </script>
</body>
</html>

Metoda getDay() vraća radni dan kao brojeve od 0 i 6, pri čemu 0 predstavlja nedjelju. Pogledajte lekciju o datumu i vremenu u JavaScript da biste saznali više o metodama datuma.

Izjava switch razlikuje se od izjave if...else na jedan važan način. Izjava o prebacivanju izvršava se red po red (tj. izjava po izjavu) i nakon što JavaScript pronađe klauzulu slučaja koja se ocijeni istinom (true), izvršava ne samo kod koji odgovara toj klauzuli slučaja, već izvršava i sve naredne klauzule slučaja do kraja.

Da biste to spriječili morate uključiti izjavu o prekidu (break) nakon svakog slučaja (kao što vidite u gornjem primjeru). Izjava o prekidu kaže da interpretator JavaScript mora izaći iz bloka switch izjave nakon što izvrši kod povezan s prvim tačnim slučajem.

Switch izjava, međutim nije potrebna za slučaj ili zadanu klauzulu, kada se konačno pojavi u izvodu prekidača. Iako je dobra programska praksa da prekine posljednji slučaj ili zadanu klauzulu u preklopničkom izrazu s pauzom. Kasnije se sprječava eventualna greška u programiranju ako se naredbi prekidača doda još jedna izjava slučaja.

Zadana klauzula nije obavezna, koja određuje radnje koje treba izvesti ako se nijedan slučaj ne podudara s izrazom prekidača. Zadana klauzula ne mora biti zadnja rečenica koja će se pojaviti u izrazu prebacivanja. Evo primjera, gdje difoltno nije zadnja klauzula.

var d = new Date();

switch(d.getDay()) {
    default: 
        alert("Radujemo se vikendu.");
        break;
    case 6:
        alert("Danas je subota.");
        break; 
    case 0:
        alert("Danas je nedelja.");
}
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript Switch Case Difoltna izjava</title>
</head>
<body>
    <script>
    var d = new Date();

  switch(d.getDay()) {
    default: 
      document.write("Radujem se vikendu.");
      break;
    case 6:
      document.write("Danas je subota.");
      break; 
    case 0:
      document.write("Danas je nedelja.");
  }
    </script>
</body>
</html>


Više slučajeva dijeli istu radnju

Svaka vrijednost slučaja mora biti jedinstvena unutar switch izjave. Međutim, različiti slučajevi ne moraju imati jedinstvenu akciju. Nekoliko slučajeva može dijeliti istu radnju, kao što je prikazano u narednom primjeru:

var d = new Date();

switch(d.getDay()) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        alert("Radni je dan.");
        break; 
    case 0:
    case 6:
        alert("Danas je vikend i dan za odmor");
        break;
    default: 
        alert("Uživajte svaki dan uz IT TUTORIJALE.");
}
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript Kombinirajte više switch slučajeva</title>
</head>
<body>
    <script>
    var d = new Date();

  switch(d.getDay()) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      document.write("Danas je radni dan.");
      break; 
    case 0:
    case 6:
      document.write("Dan je vikenda.");
      break;
    default: 
      document.write("Uživajte u svakom danu svog života.");
  }
    </script>
</body>
</html>