等待function在JavaScript中完成

下面的代码是怎么产生的,每次都会产生一个不同的输出(不是因为这个随机函数),但是它给了一些未定义的值,有时甚至是其他值。 问题是什么?

function getRandom(ubound) { return Math.floor((Math.random()*10) % ubound); } function getInterval() { var interval = [getRandom(10), getRandom(10)]; if(interval[1] >= interval[0]) return interval; else getInterval(); } function generateIntervals() { for(var i = 0; i < n; i++) intervals[i] = getInterval(); } function printIntervals() { for(var i = 0; i < n; i++) console.log("Node " + (i + 1) + ": " + intervals[i]); } generateIntervals(); printIntervals(); 

我得到如下输出:

 Node 1: 0,9 Node 2: 0,3 Node 3: undefined Node 4: 2,2 

要么

 Node 1: 3,3 Node 2: 3,3 Node 3: 1,8 Node 4: undefined 

在recursion函数中缺lessreturn值:

 if(interval[1] >= interval[0]) return interval; else return getInterval(); // ^^^^^^ 

虽然我个人只是交换两个值,而不是使用recursion。 =]

 if(interval[1] >= interval[0]) return interval; else return [interval[1], interval[0]]; 

或者更简单/使用Array.reverse()语义:

 if(interval[1] < interval[0]) interval.reverse(); return interval; 

小提琴