undefined 在 JavaScript 函数中返回
undefined is returned in JavaScript function
当我调用这个函数时,发送例如: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("");
}
你得到一个未定义的原因是因为你的j
以str.length
开头,而它应该是str.length-1. str_arr1[str.length]
是越界的,因此将是未定义的。
相关文章:
- 使用返回函数sinde.attr()jquery元素
- 从自执行函数返回函数的Javascript性能命中率
- Node Express Handlebars帮助程序未返回函数的结果
- 未在Firefox中执行PageMethod的返回函数
- 对返回函数的函数感到困惑
- 从承诺返回不返回函数会导致警告
- 从函数返回函数而不调用返回的函数
- Javascript,闭包中的返回函数如何与外部函数连接
- 为什么Coderbyte.com's的Javascript模板喜欢返回函数的原始参数
- 对象函数返回函数而不是值
- 从外部函数(数组)了解返回函数(x)
- 从Javascript类对象返回函数
- 调用Typescript setter don't返回函数,尽管关联的getter可以工作
- 使用依赖注入在 JavaScript 中返回函数
- 通过单击JSP和javascript加载两个返回函数
- 需要说明:无法理解返回函数的javascript
- 简单的onClick返回函数不起作用
- 为什么这个闭包返回函数
- JS函数返回函数供以后使用-未定义参数
- Coffeescription类中的方法返回函数而不是字符串