使用for循环连接字符串会使其以'undefined'开始?(javascript)

1l5u6lss  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(74)

undefined从何而来?我想我正确地初始化了字符串。(尝试使用调试器,但无法解决问题)
我尝试使用concat()方法。我试过+=。所有结果都是“undefined”
为什么?

const reverseString = function(string) {
    let newWord = "";
    for (i = string.length; i > -1; i--) {
        newWord = newWord.concat(string[i]);
    }
    return newWord
};

编辑:如果运行console.log(reverseString("Hello"))时不清楚
预期输出为“olleH”
实际输出为“undefinedolleH”

8oomwypt

8oomwypt1#

正如@VLAZ在评论中提到的,你的string.length大于字符串的实际长度,这就是为什么它会跳出数组。
有很多方法可以消除字符串中的undefined。一个是VLAZ所说的,它只是长度。另一个是在串联上使用空合并运算符。以下样品

const reverseString1 = function(string) {
    let newWord = "";
    for (i = string.length - 1; i > -1; i--) {
        newWord = newWord.concat(string[i]);
    }
    return newWord
};

const reverseString2 = function(string) {
    let newWord = "";
    for (i = string.length; i > -1; i--) {
        newWord = newWord.concat(string[i] ?? "");
    }
    return newWord
};

console.log(reverseString1("Hello1"));
console.log(reverseString2("Hello2"));
ycl3bljg

ycl3bljg2#

索引应该从(n-1)开始,而不是从n开始

const reverseString = function(string) {
    let newWord = "";
    for (i = string.length - 1; i > -1; i--) {
        newWord = newWord.concat(string[i]);
    }
    return newWord
};

相关问题