我写了一个函数来找到传递的字母范围内的缺失字母并将其返回。如果范围内存在所有字母,则应返回undefined。
这是我的代码:
function fearNotLetter(str) {
for (var i = 0; i < str.length;i++ ) {
if(str.charCodeAt(i+1) - str.charCodeAt(i)>1) {
return String.fromCharCode(str.charCodeAt(i)+1);
}
}
return undefined;
}
fearNotLetter("bcd");
现在此代码可以使用,但之前在 if语句中,而不是&gt; ,我使用了!== ,这个功能不适用于我应该获得undefined
的案例。而不是它,我收到了一封信或一些符号。
为什么会发生这种情况,为什么上面的代码能够正常运行?
答案 0 :(得分:4)
在循环的最后一次迭代中,这一行:
if(str.charCodeAt(i+1) - str.charCodeAt(i)>1) {
...将NaN
与字符串中的最后一个字符进行比较,因为str.charCodeAt(i+1)
正在尝试将代码超出最后一个字符。
NaN > anyNumber
始终为false
,但NaN !== anyNumber
始终为true
。
您可能希望在< str.length - 1
停止循环。