Javascript 设置if-else函数以检测是否为元音

Javascript 设置if-else函数以检测是否为元音,javascript,if-statement,Javascript,If Statement,我是JavaScript新手,我知道我做错了什么,因为我一直得到true。有人能指出我的错误吗?提前谢谢 function checkForVowel(x){ if(x == "a", "e", "i", "o", "u"){ document.write("true"); }else{ document.write("false"); } } checkForVowel("n"); JavaScript的比较运算符不是魔术;您需要分别进行每个比

我是JavaScript新手,我知道我做错了什么,因为我一直得到
true
。有人能指出我的错误吗?提前谢谢

function checkForVowel(x){
   if(x == "a", "e", "i", "o", "u"){
       document.write("true");
   }else{
       document.write("false");
   }
}

checkForVowel("n");

JavaScript的比较运算符不是魔术;您需要分别进行每个比较。您可以使用逻辑或,
|
检查“其中任何一项”:

if(x == "a" || x == "e" || x == "i" || x == "o" || x == "u")
或者,由于您有许多单字符串,因此可以使用
indexOf
。但如果你刚刚开始,上述内容可能更容易理解

if(x.length === 1 && 'aeiou'.indexOf(x) > -1)
至于你一直想说的原因,那就是
实际上是JavaScript中的一个操作符,主要是为了迷惑人们而发明的。它计算其左侧,然后计算其右侧,然后返回右侧。所以你的表达可以归结为:

if(x == "a", "e", "i", "o", "u")
if("e", "i", "o", "u")
if("i", "o", "u")
if("o", "u")
if("u")
这是一个真实的价值观


1实际上并非如此。

有时,与使用大量的
if/else
代码相比,针对数据结构测试代码要干净得多。哪个更快可能取决于特定的浏览器引擎以及您有多少比较。这一个查看字符串是否存在于元音字符串中:

var vowels = "aeiou";

function checkForVowel(x) {
    return(vowels.indexOf(x.toLowerCase()) >= 0);
}
这一个测试的目的是查看测试字符是否在javascript对象中,这里不需要这个javascript对象,但这是另一种有趣的方法来测试集合中是否有内容:

var vowels = {a: true, e: true, i: true, o: true, u: true};

function checkForVowel(x) {
    return(x.toLowerCase() in vowels);
}

我不知道为什么,但没有人提出这个建议<代码>:/

function checkForVowel(x){
    document.write(/[aeiou]/i.test(x));   //Clearly this is even simpler than
}                                         // other methods.


看看这里有很多方法来检查一个元音,你应该考虑为什么它返回代码>真的< /代码>而不是<代码> false <代码>。最好还是<代码>如果(x===“string”类型& & x=长度==1 & &‘aiouou.x(x)>1)< /> >在这个例子中不是非常重要的,但仍然更好,@Xotic750:我是鸭子打字迷,所以如果有人这么做,我希望他们有一个很好的理由=D但是谢谢你的提示,可能会有用的-1.甚至不接近。多个
|
和比较的速度为8300万次/秒,而
中的速度为300万次/秒。哦,第二次修订显示,
indexOf
,至少在字符串上,仍然比
中的
快。Plus
中的
不那么简洁,语义也不那么丰富,仍然只适用于字符串键。对不起,这不好。更好;)您可能还需要注意,该方法会将附加到
Object.prototype
的任何内容视为精确的。这对元音并不重要,但仍然
'valueOf'在元音中
@minitech-但这里的具体问题是字符,所以这两个字母中的任何一个都可以正常工作(因为它们只是字符)。如果您喜欢使用复合比较来编写代码,我也可以。我通常更喜欢其他选择。
function checkForVowel(x){
   if(x.search(/[aeiou]/i) != -1){
       document.write("true");
   }else{
       document.write("false");
   }
}