я следующие функции на JSFiddle:Java-рекурсивная функция, возвращающая неопределенная вместо ожидаемого результата
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;
}
}
Он генерирует две точки с расстоянием, равным или больше, чтобы определенное расстояние (20 в этом случае). Проблема в том, что иногда функция возвращает undefined
вместо ожидаемого результата. Вы не можете видеть это в JS Fiddle, но консольный журнал показывает, что функция возвращает undefined
только тогда, когда функция вызывает себя хотя бы один раз (когда запускается console.log('test')
. Даже когда функция возвращает undefined
, результат сам по себе определяется как объект (вторая консоль. журнал показывает соответствующий объект с координатами точек) Почему это происходит и как это можно исправить, так что соответствующий объект будет всегда возвращается
JS Fiddle ссылка:.?. https://jsfiddle.net/3naLztoa/2/
Поиск ответов было так просто, как погуглить слова из Вашего названия: [site: stackoverflow.com возвращает рекурсивную функцию javascript undefined] (https://www.google.com/search?q=site%3Astackoverflow.com+javascript+recursive+function+returns+undefined) –