Javascript 设置if-else函数以检测是否为元音
我是JavaScript新手,我知道我做错了什么,因为我一直得到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的比较运算符不是魔术;您需要分别进行每个比
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");
}
}