Javascript 递归附加到三元运算符不起作用的数组
我试图创建一个递归函数,返回一个整数数组 如果使用三元运算符,则基本情况返回“undefined”。我看不出问题出在哪里 使用JSLint,我得到了这样一条信息:“在paren中包装一个三元表达式,在左paren后面加一个换行符。” 守则:Javascript 递归附加到三元运算符不起作用的数组,javascript,arrays,recursion,conditional-operator,Javascript,Arrays,Recursion,Conditional Operator,我试图创建一个递归函数,返回一个整数数组 如果使用三元运算符,则基本情况返回“undefined”。我看不出问题出在哪里 使用JSLint,我得到了这样一条信息:“在paren中包装一个三元表达式,在左paren后面加一个换行符。” 守则: function rangeOfNumbers(startNum, endNum) { return startNum === endNum ? startNum : rangeOfNumbers(startNum, endNum - 1
function rangeOfNumbers(startNum, endNum) {
return startNum === endNum
? startNum
: rangeOfNumbers(startNum, endNum - 1).concat(endNum);
}
在最初的示例中,您只是返回startNum,这是一个数字。相反,我们希望返回一个包含startNum的数组,以便在返回时连接该值 试试这个:
function rangeOfNumbers(startNum, endNum) {
return startNum === endNum
? [startNum]
: rangeOfNumbers(startNum, endNum - 1).concat(endNum);
}
如果你这样做会怎么样<代码>(startNum==endNum)?startNum:RangeofNumber(startNum,endNum-1)。concat(endNum)代码>我认为您需要将startNum作为数组返回。否则,它不能只计算一个数字。@kvr我认为这会使JSLint警告消失。但这不应该是函数返回未定义的
的原因。三元运算符的运算符优先级低于表达式中的任何其他运算符,因此它应该按照OP期望的方式进行解析@kvr JSLint警告将继续显示,如果我使用rangeOfNumber(5,5)调用函数,函数将继续返回“undefined”