我想 return undefined 但得到的是“{”

I want to return undefined but instead got "{"

在此代码中,我想 return 一串连续字母表中缺少的字母表,如果所有字母表都存在,我想 return 未定义。 但是,returning 定义的是 returns“{”,我在网上找不到类似的案例。

function fearNotLetter(str) {

  for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) !== str.charCodeAt(i + 1) - 1) {
      return String.fromCharCode(str.charCodeAt(i) + 1)
    }
  }
  return undefined
}

console.log(fearNotLetter("abcdefghijklmnopqrstuvwxyz"))

在 for 循环中的示例中,您正在 returning

String.fromCharCode(str.charCodeAt(i)+1)

在此 return 值中,当字符为 z 时,其中 'z' 的 ascii 值为 122 而您 returning 122+1 是 '{' 的 asci 值

这就是您在示例中得到“{”的原因

您可以通过从函数中传递的字符串中删除 'z' 来进行测试

function fearNotLetter(str) {

  for(let i = 0; i < str.length; i++) {
    if(str.charCodeAt(i) !== 
    str.charCodeAt(i+1)-1) {
      return String.fromCharCode(str.charCodeAt(i)+1)
    }else{
     return undefined
    }
  }
}

fearNotLetter("abcdefghijklmnopqrstuvwxyz")

您的代码将每个字母与字符串中它后面的字母进行比较

您无法测试最后一个字母,因为它后面没有任何内容

只需更改循环,使其仅迭代到倒数第二个字母

function fearNotLetter(str) {

  for (let i = 0; i < str.length - 1; i++) {
    if (str.charCodeAt(i) !== str.charCodeAt(i + 1) - 1) {
      return String.fromCharCode(str.charCodeAt(i) + 1)
    }
  }
  return undefined
}

console.log(fearNotLetter("abcdefghijklmnopqrstuvwxyz"))