为什么这个 javascript 变量输出, "undefined," 与适当的输出相结合?

Why is this javascript variable outputting, "undefined," combined with the proper output?

我儿子开始学习 javascript,我也一直在尝试学习一些,以帮助保持他的兴趣并回答他的问题。我有一点 C++ 经验,我在玩弄这门语言并尝试编写下面的 javascript,却发现它一直在输出 "undefined" 无论正确答案是什么。我真的很感激任何人为我阐明这件事。谢谢

var word = prompt("Enter some text");
var reversedWord = reverseString(word);
alert(reversedWord);

function reverseString(text)
{
    var reversedText = "";
    var length = text.length;

    for(var i = length; i >= 0; i--)
    {
    reversedText += text[i];
    }
    return reversedText;
}

您从等于字符串长度的索引开始。

所以给出:

"Foo"
 012

它的长度为三,因此您从索引 3 开始,即 undefined

您需要从 var i = length - 1

开始

属性length对应字符串中元素的数量。例如 'you'.length === 3。但是字母的位置是从零开始的(0、1 和 2)。

在你的例子中,当你说 i = length -> i === 3 和 text[3] === undefined.

将可变长度设置为:var length = text.length - 1;,它将起作用。

数组从 0 到长度 -1,所以 text[length] 未定义尝试:

for(var i = length -1; i >= 0; i--)
{
reversedText += text[i];
}

Javascript 使用关键字 'undefined' 表示 'null '.

上述代码中观察到的问题通常称为 'Array index out of bound' 错误。

发生这种情况是因为试图从不存在的位置访问数组中的元素。

在n个元素的数组中,位置编号从0到n-1
即,从 0 到 (length - 1).

因此,在数组上写for循环时,必须保证只引用从0到(length - 1)的位置。

上述代码中的问题可以通过将 for 循环更新为仅在 (length - 1) 和 0 之间循环来解决。

这里是没有显示的更新代码'undefined':

function reverseString(text) {
    var reversedText = "";
    var length = text.length;
    for(var i = (length -1); i >= 0; i--) {
        reversedText += text[i];
    }
    return reversedText;
}