![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 8 Dołączył: 26.09.2011 Ostrzeżenie: (10%) ![]() ![]() |
Kod function zagadka() { Dlaczego raz zostaje wypisane undifined a raz true? Od czego to zależy?
var dec=confirm("Czy 2+2=5?"); if(dec===false) { var wynik=prompt("No to w takim razie podaj poprawny wynik"); if(parseInt(wynik)===4) { alert("rewelacja!"); return true; } else { alert("Szło Ci dobrze ale padłeś! Spróbuj jeszcze raz"); zagadka(); } } else { alert("No to słaby jesteś z matmy! Spróbuj jeszcze raz"); zagadka(); } } document.write(zagadka()); |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ponieważ Twoja funkcja zwraca albo TRUE albo nic nie zwraca (UNDEFINED). Zauważ, że w momencie, gdy na początku klikniesz iż 2+2=5, wyświetli się komunikat oraz ponownie wykona funkcja zagadka(). Jednak gdy drugie wywołanie tej funkcji zakończy się (ktoś podał, że jest to 4) sterowanie zostanie zwrócone do pierwszego wywołania tej funkcji i tak zakończy się nie zwracając niczego.
Rozwiązaniem będzie zwrócenie wartości rekurencyjnego wywołania zagadka(), tj. return zagadka(); zamiast samego zagadka();. Jeżeli masz jakieś wątpliwości co do tego, co zwracane jest w poszczególnych momentach działania Twojego kodu, odpal go sobie w debuggerze i wykonaj krok po kroku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 15:17 |