JavaScript ma kilka instrukcji warunkowych, jedną z nich jest instrukcja switch.

Instrukcje warunkowe są jednymi z najbardziej użytecznych i wspólnych elementów wszystkich języków programowania. Pozwalają na wykonanie określonego bloku kodu tylko w przypadku spełnienia konkretnego warunku.

if (count === 0) {
    console.log("koszyk jest pusty");
}

Instrukcja switch jest rodzajem instrukcji warunkowej, która wykonuje podane wyrażenie i porównuje jej wynik z kilkoma określonymi wartościami.

Używanie instrukcji switch w JavaScript

Nic nie stoi na przeszkodzie, aby używać wielu instrukcji if...else, aczkolwiek nie zawsze jest to optymalne rozwiązanie. Ilekroć mamy do czynienia z pisaniem wielu instrukcji if...else, możemy je zastąpić jedną instrukcją switch.

var day = 2;
var weekDay;
if (day === 0) {
    weekDay = 'Poniedziałek';
} else if (day === 1) {
    weekDay = 'Wtorek';
} else if (day === 2) {
    weekDay ='Środa';
} else if (day === 3) {
    weekDay = 'Czwartek';
} else if (day === 4) {
    weekDay = 'Piątek';
} else if (day === 5) {
    weekDay = 'Sobota';
} else if (day === 6) {
    weekDay = 'Niedziela';
}
console.log(weekDay); // 'Środa'

Instrukcja switch w JavaScript jest używana do sprawdzania kilku warunków i wykonania różnych działań w oparciu o wynik porównania. Pozwala wybrać jeden z wielu bloków kodu, który następnie zostanie wykonany.

var day = 2;
var weekDay;
switch(day) {
    case 0:
        weekDay = 'Poniedziałek';
        break;
    case 1:
        weekDay = 'Wtorek';
        break;
    case 2:
        weekDay ='Środa';
        break;
    case 3:
        weekDay = 'Czwartek';
        break;
    case 4:
        weekDay = 'Piątek';
        break;
    case 5:
        weekDay = 'Sobota';
        break;
   case 6:
        weekDay = 'Niedziela';
        break;
}
console.log(weekDay); // 'Środa'

Instrukcja switch jest o wiele bardziej wydajnym sposobem pisania instrukcji sprawdzających wielu warunków. Jej składnia jest prostsza niż skomplikowana seria kilku instrukcji if...else.

Jak działa instrukcja switch?

  1. Instrukcja switch w JavaScript wykonuje wyrażenie wejściowe znajdujące się w nawiasach okrągłych
  2. wartość wyrażenia jest porównywalna z wartościami każdej klauzuli case
  3. jeśli zostało znalezione dopasowanie, powiązany blok kodu jest wykonywany, dopóki słowo kluczowe break lub return nie zostanie znalezione lub nie dojdzie do końca instrukcji switch
  4. jeśli nie ma pasującej klauzuli case, zostanie użyty kod przypisany do klauzuli default
  5. jeśli klauzula default nie zostanie znaleziona, wtedy instrukcja switch zakończy swoje działanie, a program przechodzi do kodu znajdującego się za instrukcją switch

Jeśli wiele klauzul case pasuje do wartości wyrażenia, wybierana jest pierwsza klauzula.

var nr = 1;
switch(nr) {
    case 1:
        console.log("Wybrano liczbę 1");
        break;
    case 1:
        console.log("Wybrano liczbę jeden");
        break;
}

Wykonanie powyższego kodu wyświetli w konsoli komunikat "Wybrano liczbę 1". Kod przypisany do drugiej klauzuli case nie zostanie wykonany.

Break

Słowo kluczowe break wskazuje koniec konkretnej klauzuli case. Gdy JavaScript dociera do słowa kluczowego break, zatrzyma wykonywanie kodu wewnątrz instrukcji switch.

Jeśli pominiemy słowo kluczowe break, kod powiązany z następną klauzulą case zostanie wykonany, nawet jeśli wartość kolejnego case nie pasuje do sprawdzanego wyrażenia.

var nr = 1;
switch(nr) {
    case 1:
        console.log("Wybrano liczbę 1");
    case 2:
        console.log("Wybrano liczbę 2");
        break;
}

Wykonanie powyższego kodu wyświetli w konsoli zarówno jeden jak i drugi komunikat: "Wybrano liczbę 1" i "Wybrano liczbę 2".

Dodatkowo warto wiedzieć, że nie musimy dodawać słowa kluczowego break w ostatniej klauzuli instrukcji switch w JavaScript – wykonywanie instrukcji i tak zostanie zakończone niezależnie, czy słowo kluczowe break będzie dodane czy nie.

Default

Słowo kluczowe default definiuje kod, który zostanie uruchomiony, jeśli żadna wartość klauzul case nie zostanie dopasowana do sprawdzanego wyrażenia. Słowo kluczowe default w instrukcji switch jest opcjonalne.

var kraj = 'Francja';
var waluta;
switch (kraj) {
    case 'Anglia':
        waluta = 'GBP';
        break;
    case 'Polska':
        waluta = 'PLN';
        break;
    case 'Rosja':
        waluta = 'RUB';
        break;
    default:
        waluta = 'EURO';
}
console.log(waluta); // 'EURO'

W powyższym przykładzie żadna klauzula case nie pasuje do wartości wejściowej, dlatego też klauzula default zostanie wywołana.

W instrukcji switch w JavaScript, słowo kluczowe default nie musi być umieszczone jako ostatnie. Może być zarówno na początku jak i w środku instrukcji switch.

var kraj = 'Francja';
var waluta;
switch (kraj) {
   default:
        waluta = 'EURO';
        break;
    case 'Anglia':
        waluta = 'GBP';
        break;
    case 'Polska':
        waluta = 'PLN';
        break;
    case 'Rosja':
        waluta = 'RUB';
        break;
    
}
console.log(waluta); // 'EURO'

Grupowanie warunków

Klauzule case mogą być łączone w celu wykonania tego samego bloku kodu dla wielu przypadków. W takim sytuacji kolejność umiejscowienia klauzul case nie ma znaczenia.

var input = 'Hello';
var answer;
switch(input) {
    case 'Hi':
    case 'Hello':
        answer = "Hi";
        break;
    case 'Bye':
        answer = 'Goodbye';
        break;
}
console.log(answer); // 'Hi'

Możliwość grupowania klauzul case jest efektem ubocznym tego jak działa instrukcja switch w JavaScript bez użycia słowa kluczowego break.

Wyrażenia oraz wartości

Instrukcja switch w JavaScript pozwala używać zarówno wartości jak i wyrażeń, niezależnie czy dotyczy to deklaracji warunku switch czy klauzuli case.

var x = 3;
switch(x%2) {
    case 0:
        console.log("liczba jest podzielna przez 2");
        break;
    case 1:
        console.log("liczba jest niepodzielna przez 2");
}

Powyższy przykład wykona wyrażenie, porówna wynik z wartościami klazul case i w efekcie zwróci komunikat "liczba jest niepodzielna przez 2".

ścisłe porównanie

Podczas porównywania wartości wejściowej instrukcji switch z poszczególnymi wartościami klauzul case, używane jest ścisłe porównanie (===) – wartości muszą mieć taką samą wartość i być tego samego typu.

var error = '404';
var message;
switch(error) {
    case 404:
        message = 'Nie znaleziono';
        break;
    case 500:
        message = 'Wewnętrzny błąd serwera';
        break;
    default:
        message = 'Nieznany błąd';
}
console.log(message); // 'Nieznany błąd'

Powyższa instrukcja switch porówna wartość '400' i 400, co da wynik false, przez co zmienna message otrzyma wartość ustawianą w klauzuli default'Nieznany błąd'.

Podsumowanie

  • instrukcja switch w JavaScript jest instrukcją warunkową, która może zostać użyta do sprawdzenia kilku warunków i wykonania różnych działań w oparciu o wynik porównania
  • słowo kluczowe break powoduje zatrzymanie wykonywania kodu wewnątrz instrukcji switch
  • słowo kluczowe default definiuje kod, który zostanie wykonany, jeśli żaden z warunków instrukcji switch nie pasuje do wyrażenia
  • słowo kluczowe default nie musi być na końcu instrukcji switch – można je umiejscowić na początku lub w środku instrukcji
  • klauzule case mogą być grupowane w celu wykonania tego samego bloku kodu dla wielu przypadków
  • instrukcja switch w JavaScript pozwala używać wartości i wyrażeń
  • podczas porównywania wartości wejściowej z warunkami case, używane jest ścisłe porównanie (===)

0 Comments

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *