为什么在反转字符串时Javascript console.log结果是未定义的?

时间:2018-03-17 19:47:54

标签: javascript string undefined repeat

NULL

当我试图运行它时它返回了我" undefined"。我想知道这里的问题是什么。

2 个答案:

答案 0 :(得分:0)

  

看看:

var a = "gsdgtrshghf";

function reverseString(strr) {
  var result = "";

  if (strr.length != null) {
    for (var i = strr.length - 1; i >= 0; i--) {
      var a = strr.charAt(i);
      result += a;
    }
  }
  return result;
}
console.log(reverseString(a));

// Better
const reverse = str => Array.from(str).reverse().join('');

console.log(reverse('foo  bar mañana mañana'));

  

解释

  1. charAt(i)而非chatAt(i)
  2. 循环应从长度 - 1开始,结束于0,i应减少
  3. 最后在if
  4. 之外声明变量

    for(var i = strr.length - ; i >= 0; i--){ 不是for(var i=strr.length;i>0;i++){

    1. 更好的是,使用Array.from(str).reverse().join('')的组合,因为它甚至可以与Unicode字符一起使用,正如gaetanoM的评论中指出的那样

答案 1 :(得分:0)

主要原因是你声明var result=""并从if外部返回(因此它变得未定义,因为它的范围仅在if语句中)并且在注释you have a typo, charAt not chatAt. You can also simply use strr[i] to get the char. Also, you should do i-- and i >= 0 if you start at strr.length, otherwise for loop is immediately completed at the condition check中提到了其他错误区域。请检查以下代码。

var a = "gsdgtrshghf";
    function reverseString(strr){
       var result="";
       if (strr.length){
          
          for(var i=strr.length-1;i>=0;i--){
              var a=strr.charAt(i);
              result+=a;
          }
       }
       return result;
   }
console.log(reverseString(a))