gpt4 book ai didi

javascript - javascript 中不使用 OR 来计算字母。任何原因?

转载 作者:行者123 更新时间:2023-12-01 02:51:17 24 4
gpt4 key购买 nike

学习 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' || 'u' || 'y')) {
nombreDeVoyelles++;
}
}
return nombreDeVoyelles;
}

console.log(mot + " has " + compterNbVoyelles(mot) + " vowels and " + (mot.length - compterNbVoyelles()) + " consonants");

打印:

Anaconda has 3 vowels and 5 consonants... (there are 4 vowels in fact).

现在这个:

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;
}

打印:

Anaconda has 4 vowels and 4 consonants

完美!我不明白我的错误是什么,我认为计算机没有犯任何错误;)

最佳答案

问题出在你的 if 条件上。首先你需要了解javascript中如何进行短路操作。

在评估条件时,JavaScript 将执行尽可能少的工作来评估 bool 答案。

<小时/>

就 || 而言(这是一个逻辑或)如果你这样做:

if (condition1 || condition2 || condition3) {
// do something
}

如果条件1为真,那么它只会评估条件1,它永远不会运行条件2和条件3,因为无论它们是否为真,结果都将为真。

如果条件2为假,那么它将继续评估条件2并在第一个条件为真时停止。

<小时/>

对于 &&(逻辑与),如果您这样做:

if (condition1 && condition2 && condition3) {
// do something
}

这里短路的工作方式有所不同,一旦遇到错误值,它就会停止评估。因为无论结果如何,都将是错误的。

<小时/>

Javascript 中的错误值是

  • 0
  • ""(空字符串)
  • 未定义
  • NaN(例如 1/0 的结果)
<小时/>

回到你的例子:

'a'|| 'e' || 'i' || 'o' || 'u' || 'y'

“a”始终评估为 true,因此整个条件将返回第一个真值:“a”

你的情况简化为

if (letters === 'a')

anaconda 中有多少个“a”? 3 因此这就是你获得 3 个元音的原因。

<小时/>

您构建条件的第二种方法是正确的。如果您想搜索数组中的元素,可以使用 Array.indexOf

关于javascript - javascript 中不使用 OR 来计算字母。任何原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46954893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com