这两个术语有什么区别:
if(counter % 4 != 0)
if(counter % 4 == !0)
我看不出任何逻辑差异,但我的电脑确实如此(我 100% 确定我的电脑比我更合乎逻辑)。
所有洞察力都表示赞赏。
这两个术语有什么区别:
if(counter % 4 != 0)
if(counter % 4 == !0)
我看不出任何逻辑差异,但我的电脑确实如此(我 100% 确定我的电脑比我更合乎逻辑)。
所有洞察力都表示赞赏。
JavaScript 中的!(not) 运算符执行类型强制 - 它尝试将值转换为布尔值(真或假)。JavaScript 中的 0 是falsy,所以 !0 是 false 的反义词,即 true。
所以你的第一个if保持不变:
if(counter % 4 != 0)
但第二个实际上是
if(counter % 4 == true)
这绝对不一样。
编辑:
JavaScript 在使用非严格的!=and==运算符(相对于严格的!==and ===)时也会进行类型强制,所以在这种情况下,如果counter % 4变为 1,它将评估为true因为1是一个真值。
这是 JavaScript 中的虚假值列表:http ://www.sitepoint.com/javascript-truthy-falsy/
如果您尝试将代码作为文本阅读,可能会更有意义:
counter % 4一样的not 0吗?not 0, 或!0,true在 Javascript 中给出,所以它是:
counter % 4一样的true吗?语句的结果取决于 的值counter。请参阅 Google Chrome 的 Javascript 控制台进行说明:

!0 是 1 所以你的条件看起来像这样:
if(counter % 4 != 0)
if(counter % 4 == 1)