我正在尝试迭代数字变量中的数组,如果一个数字可以除以3我记录" fizz",如果它可以除以5 I&#39 ; m记录" buzz",如果一个数字可以除以3 + 5或15,我记录" fizzbuzz"
以下是工作代码:
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i <= numbers.length; i++) {
if (i % 15 === 0) {
console.log("FizzBuzz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else {
console.log(i);
}
};
这是我的原始代码,它没有记录&#34; fizzbuzz&#34;
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i <= numbers.length; i++) {
if (i % 5 === 0) {
console.log("Buzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else if (i % 15 === 0) {
console.log("FizzBuzz");
} else {
console.log(i);
}
};
为什么(i%15 === 0)条件需要先于其他两个条件?不管不重要吗?
答案 0 :(得分:3)
数字15可以被3和5整除。如果你不先测试它,那么你永远不会到达那里。
所以让我们以30为例。如果你先检查15,你会发现它可以被15整除。但是,如果先检查5或3,它将被标记为可被任何一个整除。
答案 1 :(得分:0)
在您的一个条件评估为true之后,您将跳出该if-block并且不评估else-if / else语句。如果你想让其他人评估你可以使用if语句而不是else-if。
答案 2 :(得分:0)
这是因为首先计算机检查第一个语句,然后在使用ELSE IF时检查其他语句,这意味着在第一个语句错误后检查语句。改为使用IF。