undefined 在 JavaScript 函数中返回

undefined is returned in JavaScript function

本文关键字:返回 函数 JavaScript undefined      更新时间:2023-09-26

当我调用这个函数时,发送例如:abc作为参数,该函数返回:undefinedcba。 我不知道为什么它要添加"未定义"到我的返回值。 我可能忽略了一些明显的东西但我看不出来。 谢谢。

function FirstReverse(str) { 
    var str_arr1 = new Array();
    var ans = '';
    for(i=0; i < str.length; i++) {
        str_arr1.push(str.charAt(i));
    }
    for(j=str.length; j >= 0; j--) {
        ans += str_arr1[j];
    }
    return ans; 
}

字符串的索引为 0。 str[str.length]不存在。

j需要从str.length - 1开始。

或者,只是return str_arr1.join();

字符串的索引从 0 开始,因此string.length始终比字符串中最后一个字符的索引大一个数字。

在第二个 for 循环中,使用

for(var j=str.length -1; j >= 0; j--) {

错误在第二个for语句中。查看解决方案:

function FirstReverse(str) { 
    var str_arr1 = new Array();
    var ans = '';
    for(i=0; i < str.length; i++) {
        str_arr1.push(str.charAt(i));
    }
    for(j=str.length-1; j >= 0; j--) {
        ans += str_arr1[j];
    }
    return ans;
}

因为当你传递"abc"时,里面只有 3 个字符。因此,arrray str_arr索引 0、1 和 2 处有元素。但是您循环了 str.length 次,即 3 次,并且没有定义str_arr[3]

你应该这样做,

function FirstReverse(str) {  
  var str_arr1 = new Array();
  var ans = '';
  for(i=0; i < str.length; i++) {
    str_arr1.push(str.charAt(i));
  }
  for(j=str.length-1; j >= 0; j--) {
    ans += str_arr1[j];
  }
  return ans;  
}

看起来你想反转一个字符串,你可以在这个javascript一行中做到这一点

function reverse(s){
    return s.split("").reverse().join("");
}

你得到一个未定义的原因是因为你的jstr.length开头,而它应该是str.length-1. str_arr1[str.length]是越界的,因此将是未定义的。