这是我第一次在这里寻求帮助。我现在正在解决freecodecamp.com中一个名为“Missing Letters”的问题,它要求我从字母字符串中返回丢失的字母,否则我将返回'undefined'。
我的逻辑是首先使用for循环遍历提供的字符串中的所有索引,然后使用if语句查找某个索引的字母的unicode减去其前任的unicode大于1的实例。
我能够使用此代码块解决它:
function fearNotLetter(str) {
var string;
for (i=0;i<str.length;i++) {
if (str.charCodeAt(i+1)-str.charCodeAt(i)>1) {
string = String.fromCharCode(str.charCodeAt(i)+1);
}
}
return string;
}
然而,当我试图通过添加另一个条件来更彻底时,代码无效:
function fearNotLetter(str) {
var string;
for (i=0;i<str.length;i++) {
if (str.charCodeAt(i+1)-str.charCodeAt(i)>1) {
string = String.fromCharCode(str.charCodeAt(i)+1);
}
else string = undefined;
}
return string;
}
我想问你们为什么会这样?为什么计算机优先于else语句而不是if条件?
非常感谢!!
答案 0 :(得分:0)
所以按照你的方法,我认为你会想要适应它
function fearNotLetter(str) {
var string = undefined; //initialize outside the loop to undefined
for (i=0;i<str.length;i++) {
if (str.charCodeAt(i+1)-str.charCodeAt(i)>1) {
string = String.fromCharCode(str.charCodeAt(i)+1);
} //no else needed
}
return string;
}