Jak byś użył a, switch
case
kiedy musisz przetestować a lub b w tym samym przypadku?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Jak byś użył a, switch
case
kiedy musisz przetestować a lub b w tym samym przypadku?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Odpowiedzi:
Możesz użyć awaryjnego:
źródło
Ponieważ inne odpowiedzi wyjaśniły, jak to zrobić, nie wyjaśniając, dlaczego to działa:
Kiedy
switch
wykonuje, znajduje pierwszą pasującącase
instrukcję, a następnie wykonuje każdy wiersz kodu za przełącznikiem, aż trafi albo nabreak
instrukcję, albo na koniecswitch
(lubreturn
instrukcję, aby opuścić całą zawierającą funkcję). Gdy umyślnie pominieszbreak
kod, tak aby kod pod następnymcase
został również wykonany, to się nazywa przejście awaryjne . Tak więc dla wymagań PO:Zapominanie o dołączaniu
break
instrukcji jest dość powszechnym błędem w kodowaniu i jest pierwszą rzeczą, na którą powinieneś zwrócić uwagę, jeśliswitch
nie działa tak, jak się spodziewałeś. Z tego powodu niektórzy ludzie lubią wstawiać komentarz, aby powiedzieć „wpadnij”, aby wyjaśnić, kiedy instrukcje break zostały celowo pominięte. Robię to w poniższym przykładzie, ponieważ jest to nieco bardziej skomplikowane i pokazuje, w jaki sposób niektóre przypadki mogą zawierać kod do wykonania, zanim się przewrócą:Możesz także (opcjonalnie) dołączyć
default
sprawę, która zostanie wykonana, jeśli żaden z pozostałych przypadków nie będzie pasował - jeśli nie podasz żadnejdefault
i nie będzie pasujących przypadków, nic się nie stanie. Możesz (opcjonalnie) przejść do domyślnego przypadku.Tak więc w moim drugim przykładzie, jeśli
someVar
jest to 1, wywołałoby to,someFunction()
a następnie zobaczyłbyś cztery alerty, które przechodzą przez wiele przypadków, z których niektóre mają alerty pod nimi. JestsomeVar
3, 4 lub 5, zobaczysz dwa alerty. JeślisomeVar
jest 7, zobaczysz „Coś innego”, a jeśli jest to 8 lub dowolna inna wartość, zobaczysz „Koniec”.źródło
Musisz zrobić dwie
case
etykiety.Kontrola przejdzie od pierwszej etykiety do drugiej, więc oba wykonają ten sam kod.
źródło
Musisz to zmienić!
źródło
Zapomnij
switch
ibreak
pozwala bawić sięif
. I zamiast twierdzićpozwala stworzyć kilka tablic ze sprawami i sprawdzić to za pomocą Array.prototype.include ()
źródło
Do oddzielenia wielkości liter używaj przecinków
źródło