Javascript缩小为什么是false替换为!1和真与!0
Javascript minification why is false replaced with !1 and true with !0
我正在使用Enyo2编写一个应用程序,该应用程序附带了一个基于UglifyJS的缩小工具。我注意到:
var t = false
被取代
var t=!1
同样的道理被替换为!0。我相信有一个很好的解释,我就是找不到。知道吗?
显然有一个。如果使用1或0来转换true或false,它会更短,但被视为整数。如果您添加!在它们的前面和后面,它将合并为布尔值,并且仍然是短的。
这是表示值的最小的非模糊方式。
true
在导线上使用4个字符,false
使用5个字符。!1
&!0
使用2个字符。
在JavaScript中,0是一个falsy值。这意味着当表示为布尔类型时,0
等于false
。1;或者任何其它的正数不是伪值并且将等同于true
。
在这里我们可以设置:
t = 0; // false
t = 1; // true
问题是这些值是整数,而不是布尔值(true或false)。使用严格相等检查(===
),我们会发现:
t = 0;
t == false; // true
t === false; // false
!
运算符对值执行逻辑NOT运算,并且可以用作将任何值转换为布尔值的快速方法:
t = !1;
t == false; // true
t === false; // true
就性能而言,if (!t)
和if (t == true)
之间并没有太大区别,但从缩小的角度来看,这将使我们的JavaScript减少了7个字节,下载速度更快。
Negation将非布尔值转换为纯布尔值。
我在Chrome开发工具中运行了这个:
> !1
false
> !0
true
因此,!1
与false
是可互换的,!0
与true
是可互换的。所以现在我们知道改变它是安全的,下一个问题是为什么。好吧,因为它的字节更少。缩小的目的是使代码更小,但兼容。
长话短说,压缩文字true
和false
是一种安全的方法,因此它们在有线传输时占用的空间较小。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么这在IE中的工作方式与在Firefox中不同
- 知道为什么我的旋转木马不会自动更改图片吗
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- Javascript缩小为什么是false替换为!1和真与!0
- 为什么使用 grunt-contrib-cssmin 会改变我的 css,而它应该只缩小它
- 为什么我不能缩小棱角.js
- 为什么我的窗户一直没有缩小
- 为什么部署(串联、缩小)AngularJS+RequireJS应用程序不工作
- 为什么 jQuery 对话框在淡出时会缩小
- 为什么JS缩小会将1000转换为1E3
- 为什么谷歌分析缩小为:“1*新日期()”
- 为什么浮动位置 元素缩小时元素不移动
- 为什么rjs合并并缩小JS,然后复制所有文件到输出目录
- 为什么我的全局变量在我的javascript文件的缩小版本中是未定义的?
- css和js缩小了为什么我的wordpress站点很慢
- 为什么缩小+gzip使文件大小小于gzip
- 当传输压缩时,为什么要缩小
- 为什么这个滑块脚本在缩小和组合时中断