javascript - !( i%2) 与 (i%2 == 0) 之间有什么区别?

标签 javascript loops if-statement

for (i=0;i<10;i++) {
if (i%2 == 0)
console.log( i + "is even number")
else
console.log(i + "is not even")

}

工作,但是

for (i=0;i<10;i++) {
if (!i%2)
console.log( i + "is even number")
else
console.log(i + "is not even")

}

不工作,为什么? i%2 什么时候变为真?

最佳答案

尝试跟随

for (i=0;i<10;i++) {
if (!(i%2))
console.log( i + "is even number")
else
console.log(i + "is not even")
}

你需要看看operator precedence

出了什么问题?

根据运算符优先级 !i%2 被评估为 (!i)%2 因此,对于 i 的每个值大于0,!i变为false并且false%2为0

关于javascript - !( i%2) 与 (i%2 == 0) 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35195251/

相关文章:

javascript - PWA 是否与浏览器共享 web-push 订阅?

C++: 程序 "Not Responding"执行时

Python - 如果字典中的值那么

VBA if else 不返回正确的值

javascript - Unicode 编码字符串

javascript - 未触发可观察的 next() 回调

python - 哪个更有效率? for 循环中的嵌套 if 或单独的 if 与单独的 for 循环?

C# 属性 - 在 setter 访问器中添加逻辑

javascript - 带有 Css 的 float 标签在边缘、Internet Explorer 中不起作用

java - JAVA如何根据某些参数返回列表中对象出现的次数