undefiniert Zurückgeben I haben folgende Funktion auf JSFiddle:Javascript rekursive Funktion anstelle des erwarteten Ergebnisses
function getRandomPointsInRange(range){
var x1 = rand(1, 40),
y1 = rand(1, 40),
x2 = rand(1, 40),
y2 = rand(1, 40),
result;
if(getDistance(x1, y1, x2, y2) < range){
console.log('test');
getRandomPointsInRange(range);
}else{
result = {x1: x1, y1: y1, x2: x2, y2: y2};
console.log(result);
return result;
}
}
Er erzeugt zwei Punkte mit Abstand gleich oder größer zu bestimmten Abstand (20 in diesem Fall). Problem ist, dass die Funktion manchmal undefined
zurückgibt, anstatt das erwartete Ergebnis. Sie können dies nicht in JS Fiddle sehen, aber das Konsolenprotokoll zeigt, dass die Funktion undefined
nur zurückgibt, wenn die Funktion sich mindestens einmal aufruft (wenn console.log('test')
ausgelöst wird. Selbst wenn die Funktion undefined
zurückgibt, wird das Ergebnis selbst als Objekt definiert (zweite Konsole). Protokoll zeigt richtige Objekt mit Punkten Koordinaten) Warum ist das passiert und wie diese behoben werden können, so richtige Objekt würde immer zurückgegeben werden
JS Fiddle Link:.?. https://jsfiddle.net/3naLztoa/2/
Antworten zu finden, war so einfach wie Wörter aus Titel Googeln: [site: stackoverflow.com javascript recursive function gibt undefined zurück] (https://www.google.com/search?q=site%3Astackoverflow.com+javascript+recursive+function+returns+undefined) –