!0和!1除了表示真/假的缩写外,还有其他含义吗?

10

阅读一些代码时,我发现了!0!1的使用。我意识到这是写truefalse更短的方式。

!0 === true
!1 === false

当然,这样做可以节省一些字节,但还有其他使用它的理由吗?

这种写法有一个名字吗?


12
是的 - “令人困惑且缺乏可读性” ;) - Oded
我更喜欢使用!!0(false)和!!1(true),因为它们更加清晰,而且只增加了50%的大小!不开玩笑,请使用关键字。 - user166390
@pst 谢谢,现在更清楚了。!0 表示 true 确实很容易被误读。 - Christofer Eliasson
如果您想了解如何影响性能,请访问http://jsperf.com/checking-if-true-or-false并运行测试。 - Oriol
1个回答

8

大多数JavaScript缩小工具(例如UglifyJS生成该代码,因为它更短且语义等效。例如,给定:

var x = true;
if (x) { 
  alert(x); 
}

UglifyJS将生成var x =!0;x&&alert(x)

通常情况下,您不需要使用这种风格编写代码;让缩小器来完成它们的工作 :-)


谢谢!我感觉这是一个缩小程序的工作,只是想确保我没有漏掉什么更重要的东西。 - Christofer Eliasson

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