0

由于我对 JavaScript 比较陌生,因此向大家提出了一个非常快速的问题。这个任务实际上来自 freeCodeCamp 课程,它是关于反转一个字符串,如标题所示。问题是,当我们可以只使用 i-- 来减少字符串计数同时反转实际字符串时,为什么我们在 str.length 行中包含 -1 整数?

这让我想起了我们在使用递归来计算一组数字(如 (n-1)、(n-2)、(n-3) 等)时所做的事情。这是同样的模式吗?或者是因为数组的索引计数,因为 0 是第一个字母而不是 1。还是别的什么?谢谢 :)

function reverseString(str) {
  for (var reversedStr = "", i = str.length - 1; i >= 0; i--) {
    reversedStr += str[i];  
  }   
  return reversedStr;
}
4

2 回答 2

1

i = str.length -1设置i要查看的第一个索引。由于字符串和数组在大多数语言中都是 0 索引的,因此有效索引从0to 开始length -1str[length]实际上字符串的最后一个字符之后。

此外i = str.length - 1,仅在循环的第一次迭代开始之前执行一次在循环的每次迭代中i--完成,但在当前迭代结束时完成。

于 2021-08-29T17:58:41.420 回答
0

长度计数从 1 开始,索引计数从 0 开始。对于"lorem"( let str="lorem") ,它的长度是 5,但它的最后一个字符的索引是 4。所以如果我们不从 str.length 中减去 -1,在第一次迭代中,我们将最终以str[5], 不存在并将返回undefined。它都是从 0 开始计数,而不是从 1 开始计数。

于 2021-08-29T18:01:17.853 回答