不使用或在javascript中统计字母。有什么原因吗?
学习javascript我写了以下内容:不使用或在javascript中统计字母。有什么原因吗?,javascript,string,conditional-statements,Javascript,String,Conditional Statements,学习javascript我写了以下内容: function compterNbVoyelles() { var nombreDeVoyelles = 0; var mot = "Anaconda"; for (var i = 0; i < mot.length; i++) { var lettre = mot[i].toLowerCase(); if (lettre === ('a' || 'e' || 'i' || 'o' || '
function compterNbVoyelles() {
var nombreDeVoyelles = 0;
var mot = "Anaconda";
for (var i = 0; i < mot.length; i++) {
var lettre = mot[i].toLowerCase();
if (lettre === ('a' || 'e' || 'i' || 'o' || 'u' || 'y')) {
nombreDeVoyelles++;
}
}
return nombreDeVoyelles;
}
console.log(mot + " has " + compterNbVoyelles(mot) + " vowels and " + (mot.length - compterNbVoyelles()) + " consonants");
函数compterNbVoyelles(){
var nombredowyelles=0;
var mot=“蟒蛇”;
对于(变量i=0;i
它打印:
水蟒有3个元音和5个辅音。。。(实际上有4个元音)
现在:
function compterNbVoyelles(mot) {
var nombreDeVoyelles = 0;
var mot = "Anaconda";
for (var i = 0; i < mot.length; i++) {
var lettre = mot[i].toLowerCase();
if ((lettre === 'a') || (lettre === 'e') || (lettre === 'i') ||
(lettre === 'o') || (lettre === 'u') || (lettre === 'y')) {
nombreDeVoyelles++;
}
}
return nombreDeVoyelles;
}
函数compterNbVoyelles(mot){
var nombredowyelles=0;
var mot=“蟒蛇”;
对于(变量i=0;i
它打印:
水蟒有4个元音和4个辅音
太好了!我不知道我犯了什么错,我假设计算机没有犯任何错误;) 当你做
lettre==('a'| | | | | | | | | i'| | | | | | o'| | | | | | u'| | | | y')
时,它首先计算括号中的内容,然后再与<
对括号中的内容进行求值将导致只计算为a的'a'
,因此最后该行实际上变成了lettre=='a'
console.log(('a'|'e'|'i'|'o'|'u'|'y'))
.as-console-wrapper{max-height:100%!important;top:0;}
当你做lettre==('a'|| e'| i'| o'| |'u'| | y')
它首先计算括号中的内容,然后再与lettre进行比较
对括号中的内容进行求值将导致只计算为a的'a'
,因此最后该行实际上变成了lettre=='a'
console.log(('a'|'e'|'i'|'o'|'u'|'y'))
.as-console-wrapper{max-height:100%!important;top:0;}
lettre==('a'.'e'.'i'.'o'.'u'.'y')
实际上相当于lettre==('a')
。尝试放置x=('a'| e'| i'| o'| u'| y')
并查看输出。所以你的答案是a
另一种选择是执行类似于(['a'、'e'、'i'、'o'、'u'、'y'])的操作
lettre==('a'| e'| i'| o'|'u'| y')
实际上相当于lettre==('a')
。尝试放置x=('a'| e'| i'| o'| u'| y')
并查看输出。所以你的答案是a
另一种选择是执行类似于(['a'、'e'、'i'、'o'、'u'、'y'])的操作代码>问题在于您的if状况。首先,您需要了解如何在javascript中进行短路操作
在计算条件时,javascript将执行尽可能少的工作量来计算布尔答案
在| |(逻辑or)的情况下,如果您执行以下操作:
if (condition1 || condition2 || condition3) {
// do something
}
if (condition1 && condition2 && condition3) {
// do something
}
如果condition1为true,那么它只会计算condition1,它永远不会运行condition2和condition3,因为无论它们是否为true,结果都将为true
如果condition2为false,那么它将继续计算condition2并在第一个true条件处停止
在&&(逻辑and)的情况下,如果您执行以下操作:
if (condition1 || condition2 || condition3) {
// do something
}
if (condition1 && condition2 && condition3) {
// do something
}
这里短路的工作原理不同,一旦遇到错误值,它就会停止计算。因为不管结果如何,结果都是假的
Javascript中的错误值是
- 假的
- 0
- “”(空字符串)
- 空的
- 未定义
- NaN(例如1/0的结果)
回到你的例子:
'a'|| 'e' || 'i' || 'o' || 'u' || 'y'
“a”的计算结果始终为true,因此整个条件将返回第一个truthy值:“a”
然后你的情况简化为
if (letters === 'a')
你在anaconda有多少个“a”?因此,这就是为什么你得到3个元音
建立条件的第二种方法是正确的。如果要搜索数组中的元素,可以使用,问题在于If条件。首先,您需要了解如何在javascript中进行短路操作
在计算条件时,javascript将执行尽可能少的工作量来计算布尔答案
在| |(逻辑or)的情况下,如果您执行以下操作:
if (condition1 || condition2 || condition3) {
// do something
}
if (condition1 && condition2 && condition3) {
// do something
}
如果condition1为true,那么它只会计算condition1,它永远不会运行condition2和condition3,因为无论它们是否为true,结果都将为true
如果condition2为false,那么它将继续计算condition2并在第一个true条件处停止
在&&(逻辑and)的情况下,如果您执行以下操作:
if (condition1 || condition2 || condition3) {
// do something
}
if (condition1 && condition2 && condition3) {
// do something
}
这里短路的工作原理不同,一旦遇到错误值,它就会停止计算。因为不管结果如何,结果都是假的
Javascript中的错误值是
- 假的
- 0
- “”(空字符串)
- 空的
- 未定义
- NaN(例如1/0的结果)
回到你的例子:
'a'|| 'e' || 'i' || 'o' || 'u' || 'y'
“a”的计算结果始终为true,因此整个条件将返回第一个truthy值:“a”
然后你的情况简化为
if (letters === 'a')
你在anaconda有多少个“a”?因此,这就是为什么你得到3个元音
建立条件的第二种方法是正确的。如果要搜索数组中的元素,可以使用尝试一些随机顺序,如(lettre==('e'| |'a'| |'o'| |'i'| |'u'| |'y')
。。你会得到剧本的