Psikusy returna, czyli czemu mam siwe włosy Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
piątek, 25 września 2009 23:43

JavaScript jako jeden z najbardziej niezrozumianych języków świata posiada parę właściwości, których ja zrozumieć nie umiem. Nie, abym nie chciał.

Jedną z nich jest fakt, że nie nakazuje wstawiania średników po każdej instrukcji. Jeśli jednak nie wstawisz średnika, może cię srogo ukarać... (trochę mi to przypomina adminów sieci osiedlowej w moim akademiku :P).

 

Prosty przykład. Co zwróci funkcja?


function simple_example() {
    return 
    { 'value' : 'sialala'}
}


Owa funkcja zwróci.... 'undefined'. Dlaczego - wszystko przez to, że JS wstawi po return średnik. Dlatego jeśli chcesz zwrócić literał obiektu w funkcji, to zawsze zaczynaj go w tej samej linii, w której jest return.

 

A teraz trochę z innej beczki. Skoro tam wstawił średnik, to co tu zrobi:


for(var i = 0; i<10; i++)
{
     alert('sialala');
}

 

W językach C-powatych kod w stylu:

 

for(int i=0; i<n; i++);
{
    printf("sialala");
}

 

Spowodowałby, że pętla i owszem wykanałaby się 10 razy, ale "sialala" byłoby wyświetlone jeden raz (Wykonanie pętli kończyłoby się na ; i wracało do warunku stopu). Klamry za średnikiem stworzyłyby nowy zasięg zmiennych (co w JS także działa co najmniej ciekawie - w porównaniu z językami C-powatymi)...

Skoro więc przy returnie wstawił się średnik, to czy tu się także wstawi? Nie. Czemu tu nie wstawił średnika? Nie wiem. Jeśli ktoś wie, z chęcią posłucham.