Javascript中的!1和!0是什么意思?

69

可能重复:
JavaScript中的return !1

今天我读取的 JavaScript 文件中有一行代码声明了一个变量,类似于阶乘的形式:

var myVariable = !1;

然后类似这样的东西被用作函数的参数,就像这样:

return variable.myFunction(!0);

有人能解释一下这个感叹号在这个上下文中的意思吗?最终,为什么通常用于表示(好处)?

提前谢谢!


7
这不是阶乘,而是一个布尔否定运算符。它将true变成false,将false变成true。可能会将任何非零值变成零。 - Rob I
26
那是可怕的代码。它是否会抛出一个 ViolentPsychopathKnowsWhereYouLiveException 异常? - Robert Harvey
1
看到这个问题的标题,我忍不住笑了出来。我不得不点进去看看。对于那些写出这样代码的人,我只能摇头。 - Marlon
2
我猜原因是程序员非常在意可以通过这种方式节省的那几个字节 - 但这不是一个好的做法。 - kapa
1个回答

119

! 是布尔型的 NOT 运算符。

NOT (!):将语句从 true 改为 false 或从 false 改为 true。

!0 = true
!1 = false

这个链接是一篇关于JavaScript布尔运算符及其使用的优秀介绍。


86
这是一种压缩布尔值 true 或 false 的技术。 - Kronos
3
为什么不使用!true!false?因为它可以节省脚本的下载大小。 - Legends
2
@Legends,是的,因为JS作为传输数据在网络上传输,并在客户端运行。 - Anirudh Ramanathan
26
为什么不直接使用 01 呢?是为了确保在缩小代码的过程中仍然清楚它们是 boolean 而不是 int 吗? - don
19
加上 ! 运算符会将 0 和 1 从 int 类型强制转换为 boolean 类型,这是正确的。 - Jake Reece
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接