2013-12-13 59 views

回答

21

显然有一个。如果您使用1或0来翻译真或假,它会更短,但看作整数。如果你添加!在前面并且将它们倒过来,它会合并成布尔值,并且仍然很短。

13

这是表达该值的最小非模糊方式。

true在导线上使用4个字符,而false使用5个字符。 !1 & !0使用2个字符。

+0

那么,为什么不简单地使用1作为真,0作为假? –

+8

因为1&0也可以是数字值。这就是为什么我添加了非含糊 – Jason

+0

@ArekS 1和0不是布尔值;他们是数字。比较可能会搞砸 – Ian

2

否定将非布尔值,但真值转换为纯布尔值。

我在Chrome开发者工具跑了这一点:

> !1 
false 
> !0 
true 

因此,!1是可以互换的false!0true互换。所以现在我们知道改变它是安全的,下一个问题就是为什么。那么,因为它的字节更少。缩小的目的是使代码更小,但兼容。

长话短说,它是一种安全的方式来压缩文字truefalse,因此它们在通过导线传输时占用的空间较少。

8

在JavaScript中,0是falsy value。这意味着0等同于false,表示为布尔类型。 1另一方面;或任何其他正面的数字,这不是一个虚假价值,将等于true

在这里,我们可以只设置:

t = 0; // false 
t = 1; // true 

这样做的问题是,这些值是整数(数字),而不是布尔值()。使用全等检查(===),我们会发现:

t = 0; 
t == false; // true 
t === false; // false 

The ! operator执行对值的逻辑非操作,并且可以作为一种快速的任何值转换为布尔:

t = !1; 
t == false; // true 
t === false; // true 

从性能上看,if (!t)if (t == true)之间有not really much difference,但是从缩小的角度来看,这使我们的JavaScript减少了7个字节,从而使它的下载速度更快。

+0

很好的答案。但是表演呢?写更多高性能!0还是假? – Cyril

相关问题