【发布时间】:2020-11-14 11:17:10
【问题描述】:
我正在尝试创建一个递归函数,该函数返回一个数字范围内的整数数组。
如果我使用三元运算符,基本情况会返回“未定义”。我看不出问题出在哪里。
使用 JSLint 我收到以下消息:“在括号中包装一个三元表达式,在左括号后有一个换行符。”
代码:
function rangeOfNumbers(startNum, endNum) {
return startNum === endNum
? startNum
: rangeOfNumbers(startNum, endNum - 1).concat(endNum);
}
【问题讨论】:
-
如果你这样尝试会发生什么?
(startNum === endNum) ? startNum : rangeOfNumbers(startNum, endNum - 1).concat(endNum); -
我认为您需要将 startNum 作为数组返回。否则它不能只是连接一个数字。
-
@kvr 我认为这将使 JSLint 警告消失。但这不应该是函数返回
undefined的原因。三元运算符的运算符优先级低于表达式中的任何其他运算符,因此它应该以 OP 期望的方式解析。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
@kvr JSLint 警告不断显示,如果我使用 rangeOfNumbers(5, 5) 调用函数,函数会不断返回“未定义”
标签: javascript arrays recursion conditional-operator