【发布时间】:2017-02-07 18:40:56
【问题描述】:
我在 JSFiddle 上有以下功能:
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,结果本身实际上定义为一个对象(第二个 console.log 显示带有点坐标的正确对象)。为什么会发生这种情况以及如何解决这个问题,所以总是会返回正确的对象?
JS Fiddle 链接:https://jsfiddle.net/3naLztoa/2/
【问题讨论】:
-
查找答案就像在您的标题中搜索单词一样简单:site:stackoverflow.com javascript recursive function returns undefined
标签: javascript recursion return