4

这两个术语有什么区别:

 if(counter % 4 != 0) 
 if(counter % 4 == !0)

我看不出任何逻辑差异,但我的电脑确实如此(我 100% 确定我的电脑比我更合乎逻辑)。

所有洞察力都表示赞赏。

4

3 回答 3

6

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/

于 2013-04-22T02:30:15.930 回答
1

如果您尝试将代码作为文本阅读,可能会更有意义:

  • counter % 4一样的not 0吗?

not 0, 或!0,true在 Javascript 中给出,所以它是:

  • counter % 4一样的true吗?

语句的结果取决于 的值counter。请参阅 Google Chrome 的 Javascript 控制台进行说明:

在此处输入图像描述

于 2013-04-22T02:37:42.327 回答
-2

!0 是 1 所以你的条件看起来像这样:

if(counter % 4 != 0)   
if(counter % 4 == 1)
于 2013-04-22T02:28:03.013 回答