反转字符串时,I';我最后得到一个NaN。Javascript

反转字符串时,I';我最后得到一个NaN。Javascript,javascript,string,reverse,Javascript,String,Reverse,我试图反转一个字符串,它确实起作用,但是当我将userInput[I]存储到结果变量中时,我在字符串的末尾得到了NaN //variables var userInput, result; userInput = prompt("Enter a string that you want reversed: "); for (var i = userInput.length; i >= 0; i--) { result += userInput[i]; } console.lo

我试图反转一个字符串,它确实起作用,但是当我将userInput[I]存储到结果变量中时,我在字符串的末尾得到了NaN

//variables
var userInput, result;

userInput = prompt("Enter a string that you want reversed: ");

for (var i = userInput.length; i >= 0; i--) {
    result += userInput[i];
}

console.log("Your string: \n" + result);
试试这个

var userInput,result=“”;//先初始化这个
userInput=prompt(“输入要反转的字符串:”);
对于(var i=userInput.length-1;i>=0;i--){
结果+=用户输入[i];
}

log(“您的字符串:\n”+结果)此问题由两个较小的问题组成

第一个问题:

“result”未初始化,因此它包含“undefined”,这会在稍后弄乱字符串。将其初始化为空字符串,以便JavaScript知道它应该将其作为字符串处理,因为“+”运算符被重载以处理加法和字符串连接

第二个问题

userInput字符串的索引从0-(userInput.length-1)开始,因此相应地更改循环

var userInput, result = ""; // initialize this first

userInput = prompt("Enter a string that you want reversed: ");

// initialize i with (userInput.length - 1) since the index ends there
for (var i = userInput.length - 1; i >= 0; i--) {
  result += userInput[i];
}
console.log("Your string: \n" + result);

String
length
属性返回字母的计数,而
数组的索引从0开始。因此,您的问题可以通过将字符串长度减少1来解决,即
userInput.length-1

var userInput, result="";

userInput = prompt("Enter a string that you want reversed: ");

for (var i = userInput.length - 1; i >= 0; i--) {
  result += userInput[i];
}
console.log("Your string: \n" + result);

userInput.length
开始循环,这是一个错误的索引,因为
userInput[userInput.length]
未定义的。您需要做的是像这样从
userInput.length-1
开始(在开始累积结果之前,不要忘记将
result
初始化为空字符串):

注意:当我们进入一个数组时,我们实际上并没有到达访问
userInput.length
索引(
userInput[userInput.length]
)因为循环的条件通常是
i
,只要
i
等于
userInput.length
,循环就会失败。向下移动数组时,应该跟踪允许的索引


注2:使用
string.charAt(index)
比使用
string[index]
更安全。了解原因。

您最好使用以下方法在JavaScript中反转字符串:

'YOURSTRING'.split('').reverse().join('');
e-g

abcdef.split(“”).reverse().join(“”)将为您提供fedcba


获取字符串。
将其拆分为数组。
反转
数组并
加入
。最后您将获得反转的字符串。
var userInput,result=“”;//先初始化这个
userInput=prompt(“输入要反转的字符串:”);
结果=userInput.split(“”).reverse().join(“”);

log(“反向字符串:\n”+结果)索引从0开始
undefined+undefined
NaN
太棒了!谢谢大家!@Ameya初始化结果变量
var result=“”
,除非它先附加
未定义的
。@Pavlo它正在按预期工作这是目前为止唯一正确的答案,但最好解释一下您更改了什么,以及为什么1)在for循环“userInput.length-1”中声明结果变量为默认字符串2)Coz。数组的第一个索引是0。为什么要声明两次
var result
?因为,初始化它为空字符串,以便JavaScript知道它应该将其作为字符串处理。最好的方法是(Y)。很好的解释。一个代码示例将使它变得更好。
'YOURSTRING'.split('').reverse().join('');