Javascript 为什么我没有定义?(JS)
我写代码是为了知道一个单词是否是回文。我认为我的代码是正确的,但我在“newStr”上没有定义。就像控制台告诉我的那样:console.log(newStr)//undefinedracerar 我不明白为什么,我打赌为什么我的报税表会显示“false”,因为我认为代码是正确的。下面是我的代码。谢谢Javascript 为什么我没有定义?(JS),javascript,undefined,palindrome,Javascript,Undefined,Palindrome,我写代码是为了知道一个单词是否是回文。我认为我的代码是正确的,但我在“newStr”上没有定义。就像控制台告诉我的那样:console.log(newStr)//undefinedracerar 我不明白为什么,我打赌为什么我的报税表会显示“false”,因为我认为代码是正确的。下面是我的代码。谢谢 函数回文(str){ //console.log(str); str=str.split(“”).join(“”.toLowerCase(); //console.log(str); //cons
函数回文(str){
//console.log(str);
str=str.split(“”).join(“”.toLowerCase();
//console.log(str);
//console.log(str.length);
let newStr=“”;
对于(设i=str.length;i>=0;i--){
newStr=newStr+str[i];
}
console.log(newStr);
如果(str==newStr){
返回true;
}否则返回false;
}
log(回文(“rarecar”)
let i=str.length
应该是let i=str.length-1
这是
str[str.length]
不是str
的索引,它比str
的最后一个索引高一个,因为索引从0开始。正如其他人所指出的,您的代码长度被缩短了一倍,可以通过更改循环不变量的初始值来固定
但我想指出,有一个更简单的方法来解决这个问题。您可以简单地反转拆分字符串时得到的数组。这首先避免了许多此类问题的发生,并导致代码更简单
函数回文(str){
return str===str.split(“”).reverse().join(“”);
}
console.log(回文(“赛车”);//返回true
console.log(回文(“rarecar”);//返回false
如果请求长度为10的数组的a[10]
(请记住,长度为10的数组将包含从a[0]
到a[9]
的元素),会发生什么情况?