Javascript 在if/else语句中遇到问题

Javascript 在if/else语句中遇到问题,javascript,function,Javascript,Function,我正在尝试编写一个名为isvotel的函数,它接受一个字符,即长度为1的字符串,如果它是元音、大写或小写,则返回true。如果字符不是元音,则函数应返回false 这似乎应该有效,但无论我输入什么字母,它都会返回真值。我试过很多不同的方法,但我遇到了麻烦 function isVowel(x){ if (x === "a" || "A" || "e" || "E" || "i" || "I"|| "o" || "O" || "u" || "U" || "y" || "Y"){ //c

我正在尝试编写一个名为isvotel的函数,它接受一个字符,即长度为1的字符串,如果它是元音、大写或小写,则返回true。如果字符不是元音,则函数应返回false

这似乎应该有效,但无论我输入什么字母,它都会返回真值。我试过很多不同的方法,但我遇到了麻烦

function isVowel(x){
  if (x === "a" || "A" || "e" || "E" || "i" || "I"|| "o" || "O" || "u" || "U" || "y" || "Y"){
    //console.log(x); // returns c
    return true
  } else {
    return false
  }
};
console.log(isVowel("c"));

以下是您的函数的改进和更正版本:

我们不检查资本和小规模的所有条件,而是先转换为小规模,然后使用x==a/e/i/o/u进行检查

函数is元音lx { x=x.toLowerCase; 如果x==a | | x==e | | x==i | | x==o | | x==u{ 返回真值 }否则{ 返回错误 } };
console.logisVowela 以下是您的函数的改进和更正版本:

我们不检查资本和小规模的所有条件,而是先转换为小规模,然后使用x==a/e/i/o/u进行检查

函数is元音lx { x=x.toLowerCase; 如果x==a | | x==e | | x==i | | x==o | | x==u{ 返回真值 }否则{ 返回错误 } }; console.logisVowela 您对| |运算符的使用不正确。您的代码当前正在计算x===a,然后是始终是真实值的a。您需要使用如下比较列表:

if (x === "a" || x === "A" || x === "o" || ...) {...}
或者像这样更整洁,而且:

您对| |运算符的使用不正确。您的代码当前正在计算x===a,然后是始终是真实值的a。您需要使用如下比较列表:

if (x === "a" || x === "A" || x === "o" || ...) {...}
或者像这样更整洁,而且:


为了进一步简化代码,您可以创建一个有效值数组,只需检查它们传入的值是否包含在有效值列表中

函数is元音lx{ 变量元音=[a,e,i,o,u,y]; 返回元音.indexOfx.toLowerCase>-1; };
console.logisVowela 为了进一步简化代码,您可以创建一个有效值数组,只需检查它们传入的值是否包含在有效值列表中

函数is元音lx{ 变量元音=[a,e,i,o,u,y]; 返回元音.indexOfx.toLowerCase>-1; }; console.logisVowela 你可以在这里使用/[a | e | i | o | u]/i.testyourtext

以下是实现这一点的单个衬里:

var YOURTEXTHERE='b'; //检查是否是元音 if/[a | e | i | o | u]/i.testYOURTEXTHERE{ 控制台。记录“元音!”; } 其他的 控制台。记录“非元音” 你可以在这里使用/[a | e | i | o | u]/i.testyourtext

以下是实现这一点的单个衬里:

var YOURTEXTHERE='b'; //检查是否是元音 if/[a | e | i | o | u]/i.testYOURTEXTHERE{ 控制台。记录“元音!”; } 其他的
控制台。记录“非元音” 您只是在比较x==a,您需要
x==A | | x==o,依此类推

您只是在比较x==a,您需要 x==A | | x==o,依此类推

干净的版本可能是:

函数is元音lx{ 返回['a','e','i','o','u','y'].indexOfx.toLowerCase>-1; }; console.logisVowelc; console.logisVowela; console.logisVowelA 干净的版本可能是:

函数is元音lx{ 返回['a','e','i','o','u','y'].indexOfx.toLowerCase>-1; }; console.logisVowelc; console.logisVowela;
console.logisVowelA 传入长度为1的字符串时,可以使用string.includes进行简单比较。根本不需要任何阵列

函数is元音lx{ 返回'aeiouy'。包括x.toLowerCase; }; console.log是元音;//错误的
console.log是元音;//true当您传入长度为1的字符串时,可以使用string.includes进行简单比较。根本不需要任何阵列

函数is元音lx{ 返回'aeiouy'。包括x.toLowerCase; }; console.log是元音;//错误的
console.log是元音;//正确的也许一种不同的方法和更清洁的解决方案可以更好地工作,如下所示

function isVowel(character) {

  // Clean the character to eliminate errors with capital letters
  let cleanedChar = character.toLowerCase();

  // Check if the cleaned character which is now any lower case letter matches a vowel
  if (cleanedChar.match(/[aeiou]/g)) {
    // Return true if it does
    return true;
  }

  // return false if ever get to this point (it means the char was not a vowel)
  return false;
}

// Call isVowel function and pass it 'c'
console.log(isVowel('c'));

也许一种不同的方法和更清洁的解决方案可以更好地工作,如下所示

function isVowel(character) {

  // Clean the character to eliminate errors with capital letters
  let cleanedChar = character.toLowerCase();

  // Check if the cleaned character which is now any lower case letter matches a vowel
  if (cleanedChar.match(/[aeiou]/g)) {
    // Return true if it does
    return true;
  }

  // return false if ever get to this point (it means the char was not a vowel)
  return false;
}

// Call isVowel function and pass it 'c'
console.log(isVowel('c'));

x===a | | x===a | | |…我相信你在所有可能性上都需要x==。如果这是错误的,请更正。在进行任何必要的类型转换后,==运算符将进行相等性比较。===运算符不会进行转换,因此,如果两个值的类型不同,则===只会返回false。两者都同样快。每当操作数的类型和值严格要求相同时,灌输使用===比较运算符的习惯。它将避免不必要的幕后问题。x===a | | x===a | | |…我确信您在所有可能性上都需要x==。如果这是错误的,请更正。在进行任何必要的类型转换后,==运算符将进行相等性比较。===运算符不会进行转换,因此,如果两个值的类型不同,则===只会返回false。两者都同样快。每当操作数的类型和值严格要求相同时,灌输使用===比较运算符的习惯。这将避免不必要的幕后问题。这非常有帮助。多谢各位
很如果我的答案对你有帮助,请使用绿色复选标记让人们知道!这很有帮助。非常感谢你!如果我的答案对你有帮助,请使用绿色复选标记让人们知道!这是我认为最简洁的答案。这是我认为最简洁的答案。非常感谢。@CraigCarter社区成员给你的每个答案旁边都会有一个勾号,你需要点击答案旁边对你有帮助的勾号。请阅读,非常感谢。@CraigCarter社区成员给您的每个答案旁边都会有一个勾号,您需要单击答案旁边对您有帮助的勾号。请阅读