Skrócony zapis if Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
poniedziałek, 21 września 2009 21:08

Z pewnością nie raz używałeś instrukcji warunkowej if. Niekoniecznie musiałeś programować w JS, aby się z warunkami. Często warunki w programie stanowią największą część kodu. Czy muszą zajmować aż tyle miejsca? Nie...

Normalny if wygląda tak:

 if (warunek) {

    // wykonaj

} else {

    // wykonaj co innego

} 


Jeśli to, co ma zostać wykonane ma jedynie jedną linię kodu, np:

 if (i>0) {

    i--;

} else {

     i++;

} 


Można to zapisać krócej:

 if (i>0) i--;

else i++; 


Jeśli opuścimy klamry, to zostanie wykonany kod do pierwszego średnika, jako kod warunkowy. Reszta zostanie wykonana liniowo. Czyli jeśli masz:

if (i>0) {
    i--;
    inna_zmienna = 4;
} else {
     i++;
    inna_zmienna = 7;
}

I opuścisz klamry, to w przypadku, gdy i> 0 zostanie wykonane:

  1. i--
  2. inna_zmienna = 4
  3. inna_zmienna = 7


Tak więc pamiętaj:

  • zawsze używaj klamer
  • jeśli zdecydujesz się z powodów "oszczędności czasu" z nich zrezygnować, zawsze bardzo uważnie stawiaj wcięcia


Jednak nie o tym miała być ta porada :) Miałem zamiar pokazać, rzeczywistą możliwość skrócenia kodu, oto i ona:

 (i>0) ? i-- : i++; 


Jest równoznaczne pierwszemu listingowi. W takim zapisie nie można używać więcej niż jednej instrukcji. Czyli nie można napisać i--; inna_zmienna=4;

Więc po co to?

Bardzo ułatwia to życie, i kod, kiedy masz krótką funkcję, np. min:
function min(a, b) {

    if (a>=b) {

        return b;

    } else {

        return a;

    }

}


Jaka ta funkcja dluuuuga! Fuj! A można ładnie i szybko:

 function min(a, b) {

    return (a>=b) ? b : a;

} 


Przekonałem, czy jeszcze nie? To może coś takiego:


a = (user=="Kasia") ? "Witaj Kasiu" : "Nie znam Cię!";

alert(a);


lub nawet krótsze:
 alert((user=="Kasia") ? "Witaj Kasiu" : "Nie znam Cię!"); 


Jest wiele możliwości wykorzystania tego skrótu. Polecam po eksperymentować :)

Bądź jednak czujy. Zbyt uproszczony kod czasem staje się mniej czytelny - lepiej jest napisać dłuższy kod, ale łatwiejszy do zrozumienia niż krótki i nieczytelny meisterstück kompresji.

 

Zobacz podobne artykuły