Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] Włąsna funkcja reaz zwraca true a raz undifined
pehaperowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 8
Dołączył: 26.09.2011

Ostrzeżenie: (10%)
X----


Kod
function zagadka() {
    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());
Dlaczego raz zostaje wypisane undifined a raz true? Od czego to zależy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


takie 2 uwagi "techniczne"
Cytat
document.write(zagadka());

1. Nie używaj do takich celów document.write, lepiej użyć funkcji alert albo console.log.
Document.write jak masz już załadowany dokument kasuje ci całą zawartość dokumentu i potem są problemy.

2.
Cytat
} else {
alert("No to słaby jesteś z matmy! Spróbuj jeszcze raz");
zagadka();
}


lepiej szanować call stack i usunąć rekurencję, przerobić na setInterval z argumentem 0:
Cytat
} else {
alert("No to słaby jesteś z matmy! Spróbuj jeszcze raz");
setInterval(zagadka, 0);
}


Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 19:06