的我已在的jsfiddle下列的函數:的Javascript遞歸函數返回undefined代替預期結果
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上看到,但控制檯日誌顯示只有當函數至少調用一次(當觸發console.log('test')
時函數返回undefined
即使函數返回undefined
,結果本身實際上被定義爲一個對象(第二個控制檯)。日誌顯示了點正確的對象座標),這是爲什麼發生,這可怎麼固定的,所以恰當的對象將總是返回
JS小提琴鏈接:?https://jsfiddle.net/3naLztoa/2/
找到答案是谷歌搜索作爲您的標題詞一樣簡單: [網站:stackoverflow.com javascript遞歸函數返回undefined](https://www.google.com/search?q=site%3Astackoverflow.com+javascript+recursive+function+returns+undefined) – 2016-09-29 12:55:55