Javascript中的逻辑运算符

Javascript中的逻辑运算符,javascript,nested,Javascript,Nested,当我可以被3和5整除时,我想打印出FizzBuzz。我的代码可能有什么问题 for(var i = 1; i<=20; i++){ if(i % 3 ===0){ console.log("Fizz"); }else if(i % 5 ===0){ console.log("Buzz"); }else if(i%3 ==0 && i%5 ==0){ console.log("FizzBu

当我可以被3和5整除时,我想打印出FizzBuzz。我的代码可能有什么问题

 for(var i = 1; i<=20; i++){

     if(i % 3 ===0){
         console.log("Fizz");
     }else if(i % 5 ===0){
         console.log("Buzz");
     }else if(i%3 ==0 && i%5 ==0){
         console.log("FizzBuzz");
     }else{
         console.log(i);
     }
}

for(var i=1;i如果第一个或第二个条件为真,则进入该块,但如果
条件为真,则不计算任何其他
条件。因为第三个条件要求第一个和第二个条件都为真,所以它永远不会进入该块

试着这样安排你的条件:

for(var i = 1; i<=20; i++){
     if(i%3 === 0 && i%5 === 0){
         console.log("FizzBuzz");
     }else if(i % 3 === 0){
         console.log("Fizz");
     }else if(i % 5 === 0){
         console.log("Buzz");
     }else{
         console.log(i);
     }
}

for(var i=1;i主要问题是,只有在进行其他比较之后,才会对“FizzBuzz”进行检查。如果
i%3===0
(打印“FizzBuzz”的要求之一),它将永远不会到达FizzBuzz检查

作为一个简单的修复,将FizzBuzz检查移到第一个if语句

for(var i = 1; i <= 20; i++) {
     if(i % 3 === 0 && i % 5 === 0) {
         console.log("FizzBuzz");
     }
     else if(i % 5 === 0) {
         console.log("Buzz");
     }
     else if(i % 3 === 0) {
         console.log("FizzBuzz");
     }
     else {
         console.log(i);
     }
}
…与

if(i % 15 === 0) {

(i%3==0&&i%5==0)
应该是第一个条件。如果你仔细想想,如果我可以被3和5整除,那么在到达第三个条件之前,它将进入第一个
If
语句。

因为匹配的第一个条件将执行,其他条件都不会执行。那么它可以被15整除=>当然,但是15是最大的公约数吗?在这种情况下,它是因为3和5都是素数,但对于非素数,它不一定是这样工作的。@Jon你是说最小公分母吗?是的;它正好是3*5,因为它们都是素数。是的,mindblock,对不起。LCD是正确的,而不是GCD。只是说一些解释为什么它是等价的会有帮助。@Jon-添加了一个小解释在LCDAn上实现更紧凑(更高效)的解决方案,使用条件运算符:
console.log((i%3?:“Fizz”)+(i%5?:“Buzz”)| | i)
if(i % 3 === 0 && i % 5 === 0) {
if(i % 15 === 0) {