我是JavaScript的新手,我知道我做错了,因为我不断得到true
。有人可以指出我的错误吗?提前致谢。
function checkForVowel(x){
if(x == "a", "e", "i", "o", "u"){
document.write("true");
}else{
document.write("false");
}
}
checkForVowel("n");
答案 0 :(得分: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 实际上不是。
答案 1 :(得分: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);
}
答案 2 :(得分: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");
}
}