为什么代码会返回输出+ 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("");
};
答案 0 :(得分:2)
您需要初始化结果的值,当您var result
,result
的值为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("");
};