为什么代码返回输出加上undefined

时间:2014-12-18 04:08:51

标签: javascript

为什么代码会返回输出+ undefined

一个函数,其中参数h等于680131659347。输出为leepadgdenifednu。这是leepadg + denifednu(未定义)。

var f = function (h) {
  var letters, result, i;

  i = 7;
  letters = "acdegilmnoprstuw";

  while (i) {
    result += letters[parseInt(h % 37)];
    h = h / 37;
    i--;
  }
  return result.split("").reverse().join("");
};

4 个答案:

答案 0 :(得分:2)

您需要初始化结果的值,当您var resultresult的值为undefined时,当您在字符串连接中使用它时,该值将为{ {1}}

undefined+<concatenated value>
var log = (function() {
  var $log = $('#log');
  return function(msg) {
    $('<p/>', {
      text: msg
    }).prependTo($log)
  }
})();

var f = function(h) {
  var letters, result = '',
    i;

  i = 7;
  letters = "acdegilmnoprstuw";

  while (i) {
    result += letters[parseInt(h % 37)];
    h = h / 37;
    i--;
  }
  return result.split("").reverse().join("");
};

log(f(680131659347))

答案 1 :(得分:0)

您未初始化结果,并且您尝试将 Concate 值结果

 var f = function (h) {
      var letters, result, i;
    result=//Initialize Result
      i = 7;
      letters = "acdegilmnoprstuw";

      while (i) {
        result += letters[parseInt(h % 37)]; 
        h = h / 37;
        i--;
      }
      return result.split("").reverse().join("");
    };

答案 2 :(得分:0)

使用它:

 var f = function (h) {
      var letters, result, i;

      i = 7;
      letters = "acdegilmnoprstuw";
result="";// initailize result
      while (i) {
        result += letters[parseInt(h % 37)];
        h = h / 37;
        i--;
      }
      return result.split("").reverse().join("");
    };

答案 3 :(得分:0)

结果未初始化为字符串,因此第一次连接时会生成错误,如未定义然后确定,所以将结果变量初始化为结果=&#39;&#39;

var f = function (h) {
  var letters, result='', i;

  i = 7;
  letters = "acdegilmnoprstuw";

  while (i) {
    result += letters[parseInt(h % 37)];
    h = h / 37;
    i--;
  }
  return result.split("").reverse().join("");
};
相关问题