【问题标题】:Why is my function returning "newLine.unshift(startN) is not a function" [duplicate]为什么我的函数返回“newLine.unshift(startN) 不是函数”[重复]
【发布时间】:2021-03-19 17:15:04
【问题描述】:

我一直在尝试编写一个递归函数来获取一系列数字,但我收到一条错误消息,提示 'newLine. unshift(startN) is not a function'

以下是代码:

function rangeOfNumbers(startN, endN) {
  if (startN - endN === 0) {
    return "The starting number will always be less than or equal to the ending number";
  } else {
    const newLine = rangeOfNumbers(startN + 1, endN);
    newLine.unshift(startN);
    return newLine;
  }
}

console.log(rangeOfNumbers(1, 7));

有人可以帮我找出出现上述错误的原因吗?

【问题讨论】:

  • 我根本看不懂,但我没有看到 rangeOfNumbers 除了错误条件返回任何东西,所以不清楚你在期待什么。
  • unshift 是一种应用于数组的方法。例如arr = [1, 2, 3]。 arr.unshift(4, 5)。您不能将 unshit 写入您的 rangeOfNumber 函数。请说出您想要的预期结果是什么
  • 哦,我认为那里有一个return,但我看不到它在哪里被初始化为除了错误条件之外的任何东西。

标签: javascript function recursion


【解决方案1】:

rangeOfNumbers(1, 7) / newLine = rangeOfNumbers(2, 7)
rangeOfNumbers(2, 7) / newLine = rangeOfNumbers(3, 7)
...
rangeOfNumbers(7, 7) / newLine = "起始数字永远是..."

typeof newLine = 字符串
newLine.unshift() >> undefined // unshift 不可用 JS 字符串

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2019-12-01
    • 2018-11-26
    • 2020-06-17
    相关资源
    最近更新 更多