首页 > 解决方案 > 为什么这个 javascript 变量输出“未定义”和正确的输出?

问题描述

我儿子开始学习 javascript,我也一直在尝试学习一些,以帮助他保持兴趣并回答他的问题。我有一点 C++ 经验,我正在玩弄该语言并尝试编写下面的 javascript,只是看到它不断输出“未定义”,无论正确答案是什么。我真的很感激有人为我阐明了这件事。谢谢。

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;
}

标签: javascriptundefined

解决方案


Javascript 使用关键字“未定义”来表示“”。

在上述代码中观察到的问题通常称为“数组索引超出范围”错误。

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

在 n 个元素的数组中,位置编号从 0 到 n-1
IE,从 0 到(长度 - 1)。

因此,在对数组编写 for 循环时,必须确保仅对从 0 到 (length - 1) 的位置进行引用。

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

这是不显示“未定义”的更新代码:

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

推荐阅读