这两个术语有什么区别:
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)