为什么我的for循环return 'undefined'作为字符串的最后一个元素

Why does my for loop return 'undefined' as the last element of a string

我试图使用 for 循环反转字符串。我采用的方法是反向遍历整个字符串,按降序获取字符串的每个单独字符,然后将反转的字符连接在一起形成一个新的反转字符串。 然而,我遇到了一个小问题——字符串确实反转了,但是 'undefined' 在开始时被连接起来了。

我做错了什么,为什么会这样?非常感谢您的提前帮助。

请查看代码片段和控制台了解详情。

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length; i >= 0; i--) {
  let char = string[i];
  newStr += char;
}

console.log(newStr);

因为数组从 0 开始并且最新的元素可以被 length-1 访问所以 array[length] 等于写 array[999999]

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length-1; i >= 0; i--) {
  let char = string[i];
  newStr += char;
}

console.log(newStr);
//alternative way
console.log(string.split('').reverse().join(''));

您应该从 string.length - 1 开始,因为 string[string.length] 试图引用数组边界外的元素,因此计算结果为 undefined

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length - 1; i >= 0; i--) {
  let char = string[i];
  newStr += char;
}

console.log(newStr);