0

我是 JavaScript 新手,我知道我做错了什么,因为我不断得到true结果。有人可以指出我的错误吗?提前致谢。

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

checkForVowel("n");
4

3 回答 3

11

JavaScript 的比较运算符并不神奇。您需要分别进行每个比较。您可以使用逻辑 OR 检查“其中任何一个” ||

if(x == "a" || x == "e" || x == "i" || x == "o" || x == "u")

或者,由于您有许多单字符串,您可以使用indexOf. 但是如果您刚刚开始,上述内容可能更容易理解。

if(x.length === 1 && 'aeiou'.indexOf(x) > -1)

至于你为什么说实话,那,实际上是 JavaScript 中的一个运算符,主要是为了迷惑人而发明的1。它评估其左侧,然后评估其右侧,并返回右侧。所以你的表达总结如下:

if(x == "a", "e", "i", "o", "u")
if("e", "i", "o", "u")
if("i", "o", "u")
if("o", "u")
if("u")

这是一个真实的价值。

1其实不是。

于 2012-06-07T01:26:24.213 回答
2

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

var vowels = "aeiou";

function checkForVowel(x) {
    return(vowels.indexOf(x.toLowerCase()) >= 0);
}

这个测试以查看测试字符是否在此处不需要的 javascript 对象中,但这是另一种有趣的测试某些东西是否在集合中的方法:

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

function checkForVowel(x) {
    return(x.toLowerCase() in vowels);
}
于 2012-06-07T01:31:30.323 回答
1

我不知道为什么,但没有人建议这个。:/

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

或者

function checkForVowel(x){
   if(x.search(/[aeiou]/i) != -1){
       document.write("true");
   }else{
       document.write("false");
   }
}
于 2012-06-07T01:59:03.853 回答