2017-04-17 21 views
-1

如果有人可以帮我明白为什么这个代码的第一件作品和其他没有:不能得到这个基本的循环运作

var i = 1; 
while (i <= 20){ 
    if (i & 15 === 0) { 
     console.log("JuliaJames"); 
    } else if (i % 3 === 0) { 
     console.log("Julia"); 
    } else if (i % 5 === 0) { 
     console.log("James"); 
    } else { 
     console.log(i); 
    } 
    i++; 
} 

,这不起作用:

var i = 1; 
while (i <= 20){ 
    if (i % 3 === 0 && i & 5 === 0) { 
     console.log("JuliaJames"); 
    } else if (i % 3 === 0) { 
     console.log("Julia"); 
    } else if (i % 5 === 0) { 
     console.log("James"); 
    } else { 
     console.log(i); 
    } 
    i++; 
} 
+2

可能,两者都有效,但输出不同。你期望得到什么?你是否试图理解代码中发生了什么(对你来说最有趣的部分 - 第一个'if'的条件) – maxkoryukov

+2

'1&5'看起来像你打算修改它。 – corn3lius

+3

我想你的意思是在第二个例子中使用'i%3 === 0 && i%5 === 0'' – naomik

回答

0

将括号中的表达式i%3和i & 5包裹起来,它将按预期工作。

var i = 1; 
while (i <= 20){ 
    if ((i % 3) === 0 && (i & 5) === 0) { 
     console.log("JuliaJames"); 
    } else if (i % 3 === 0) { 
     console.log("Julia"); 
    } else if (i % 5 === 0) { 
     console.log("James"); 
    } else { 
     console.log(i); 
    } 
    i++; 
}