我写了这个JavaScript代码,但它始终结束** undefined ** mycode?我做错了什么/将来如何防止这种情况发生。我正在通过chrome javascript控制台运行我的代码。
这是我的代码
//Reverse a string
//-------------------------//
//Input a string
var string = prompt("Please enter string");
//console.log(string);
//Find length of string
var stringLength = string.length;
//console.log(stringLength);
//Creating an empty string for outputting answer
var reversedString = "";
//Start from length of the string and work backwards, inputting letter 1 at a time.
for (var i = stringLength; i >= 0; i--){
reversedString += string[i];
//console.log(string[i]);
}
//Outputting the reversed string;
alert(reversedString);
预先感谢您的任何答案
答案 0 :(得分:2)
从
更改循环for (var i = stringLength; i >= 0; i--){
到
for (var i = stringLength-1; i >= 0; i--){
问题是,javascript中的数组索引是基于0的。
让我们说在提示符中输入的字符串是“abc”,字符串的长度是3.在循环中,您可以将其作为string[3]
访问,这是未定义的。因此错误。
以下是演示更新代码的小提琴:
答案 1 :(得分:0)
你不应该做string [i]而不是string.charAt(i);同时将stringLength更改为stringLength - 1.这应该可以解决您的问题。如果您希望在不同的浏览器中使用它,请使用charAt表示法。 Javascript数组从0开始而不是1,这就是为什么你做长度 - 1来获取最后一个元素。例如: 对于10个元素,数组索引是0-9。 10位于数组的边界之外。
for (var i = (stringLength - 1); i >= 0; i--){
reversedString += string.charAt(i);
这是正确答案。
答案 2 :(得分:0)
在提醒你之前添加string [i]是这段代码的最后一件事,因此最后一个字符串[i],(我假设你的数组中的第一个元素)的值是undefined。
for (var i = stringLength; i >= 0; i--){
reversedString += string[i];
//console.log(string[i]);
}
我不知道为什么会这样,但我知道坚持惯例是总是一个好主意,for循环的那个是:
for(var i = 0; i < [length variable];i++) {
...
}
答案 3 :(得分:0)
正确的代码
for (var i = stringLength-1; i >= 0; i--){
reversedString += string[i];
console.log(string[i]);
}