• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

prüfen ob funktion ordnungsgemäß ausgeführt wurde

hallo,

ich bin gerade ratlos was meine retrun-Werte angeht...
Ich rufe mit einer Funktion a() eine Funktion b() auf. b() macht diverses Zeug und bricht mit return ab, wenn entweder alles erledigt wurde, oder bricht mit return false ab, wenn ein Fehler auftritt.
Dann soll in a() jenachdem ob b() erfolgreich war etwas ausgeführt werden.
dazu habe ich mit folgenden code ausgedacht der aber nicht funktionieren will!
vereinfacht:
Code:
function a(){
  var test = b();
  if(test){
    mach was
  }
  else return;
}
function b(){
if(bedingung) return false;
if(andere bedingung) return;
}
das geht nicht die variable test in a() ist immer "undefined"
ich bin davon ausgegangen dass der Rückgabewert von return true ist. stimmt das? ist aber für das Problem erstmal schnuppe, weil es auch nicht geht wenn ich mit return true; true zurückgebe

hier auch der echte code...
Code:
       [COLOR=#b22222] function neuerTurm[/COLOR](mausPosX,mausPosY){
            var mausPos={x:mausPosX,y:mausPosY}
[COLOR=#006400]            //neuen Weg fuer alle Monster finden[/COLOR]
           [COLOR=#b22222] var test = wegAendern();[/COLOR]
            console.log(test);
[COLOR=#b22222]if(test){[/COLOR]
[COLOR=#006400]            //Turm in Array erstellen[/COLOR]
            turmPos.push(mausPos);
[COLOR=#006400]        // Turm grafisch erstellen[/COLOR]
            layerTuerme.drawImage(turm1Bild, mausPos.x, mausPos.y);
[COLOR=#b22222]}[/COLOR]
 [COLOR=#006400]           //Menue verlassen[/COLOR]
            exitMenue();                       
        }        
        [COLOR=#b22222]function wegAendern()[/COLOR]{
            var i,monsterAufNormalWeg,wegTest;
         [COLOR=#006400]   //neuen allgemeinen Weg berechen und testen ob es einen Weg gibt, wenn nein wird false zurückgegeben[/COLOR]
            wegTest=a_stern(start,ziel);
            if(wegTest)normalWeg=wegTest;
            [COLOR=#ff0000]else return false;[/COLOR]
      [COLOR=#006400]      //für aktuell bewegte Monster den Weg berechnen[/COLOR]
            for(var a=0;arrayMitMonstern[a];a++){
             [COLOR=#006400]   //hier wird geprueft, ob sich das Monster auf dem normalWeg befindet[/COLOR]
                monsterAufNormalWeg=false;
            [COLOR=#006400]    //stelle, an der sich das Monster im aktuellen weg array befindet[/COLOR]
                i=arrayMitMonstern[a].i;
              [COLOR=#006400]  //prüfen ob der vorherige und nächste refPunkt in normalWeg sind[/COLOR]
                for(var b=1;normalWeg[b];b++){//b=1 weil ein vorgänger Referenzpunkt definiert sein muss
                  [COLOR=#006400]  //wenn der aktuelle und vorherigerige refpunkt in normalWeg sind, dann wird der normalWeg als weg festgelegt[/COLOR]
                [COLOR=#800000]    if(arrayMitMonstern[a].weg[i].x==normalWeg[b].x && arrayMitMonstern[a].weg[i].y==normalWeg[b].y && arrayMitMonstern[a].weg[i-1].x==normalWeg[b-1].x && arrayMitMonstern[a].weg[i-1].y==normalWeg[b-1].y){[/COLOR]
                        arrayMitMonstern[a].weg=normalWeg;
                        arrayMitMonstern[a].i=b;
                        monsterAufNormalWeg=true;
                        [COLOR=#ff0000]return;[/COLOR]
                   [COLOR=#800000] }[/COLOR]
                }
            [COLOR=#006400]    //das wird ausgefuert wenn das Monster nicht auf dem normalWeg laeuft[/COLOR]
                if(!monsterAufNormalWeg){                    
                    var letzterRefPunktID=arrayMitMonstern[a].i-1;
                  [COLOR=#006400]  //vom letzten Refpunkt aus den neuen weg berechnen, weil a_stern immer vielfache von abstandPP zum rechnen braucht[/COLOR]
                    var pos={x:arrayMitMonstern[a].weg[letzterRefPunktID].x,y:arrayMitMonstern[a].weg[letzterRefPunktID].y};
[COLOR=#006400]    //Test ob ein Weg existiert, wenn nein wird false zurückgegeben[/COLOR]
                    wegTest=a_stern(pos,ziel);
                    [COLOR=#800000]if(wegTest){[/COLOR]
[COLOR=#006400]//Wegzuweisung[/COLOR]
                        arrayMitMonstern[a].weg=wegTest;
[COLOR=#006400]  //monster soll beim 1. wegpunkt weiter laufen.[/COLOR]
                        arrayMitMonstern[a].i=1;
                        [COLOR=#ff0000]return;[/COLOR]
                    [COLOR=#800000]}[/COLOR]
                    [COLOR=#ff0000]else return false;[/COLOR]
                }            
            }
        }

viele grüße

PS: wie kann man die farben aus dem edior(coffeeCup free) mit kopieren? wäre toll wenn man in dem code was erkennen könnte...
 
Werbung:
Also, es muss definitiv return true; heißen. Im Prinzip beantwortet das deine Frage. Den langen Code habe ich mir jedenfalls jetzt noch nicht intensiv angesehen.
 
das mit dem return ture ist schonmal gut. geht aber leider immer noch nicht
ich glaube aber ich habe noch einen fehler gefunden.. melde mich falls doch nicht;
aber danke :)
 
Werbung:
hi, ich hab mir deinen code auch nicht durgelesen, aber return gibt standardmäßig nichts zurück, du musst schon noch true dahinterschreiben.
Dein Code funktioniert nicht, weil für IF false und undefined eigentlich das gleiche ist. Machs halt z.B. so
if(test != false)
oder if(typeof test == "undefined)
 
Zurück
Oben