!0这么写有什么好处?

!0这么写有什么好处?会有性能上的区别吗?

还有例如这样的!!0 !1 !-1,是不是比直接写true和false少了好多字母?这样省流量 (lll¬ω¬)?

阅读 5k
6 个回答
!0                => 不等于0  => true
!=1 or !=-1       => 常用语indexOf的返回值判断,或者其他number的判断
!!0               => 等于0   => false

更多的是考虑简写和优化代码的时候使用,好比
if(){}else if(){} => ?:(人们常见的三目)

还一点就是省流量,简写意味着减少代码量,减少文件大小,意味的就是减少流量
但是 如果仅仅是一个*!0*
是优化不了多少的流量的,具体前端优化可以查看前端优化相关的资料

至于代码运行的时长
你可以使用 
console.time()
//code
console.timeEnd();
来跑跑的运行的时间

!1 和 !-1 都是 !x 这种写法的具体事例, 对 x 做"非"运算. 这就是一种布尔运算的基本写法吧..., 而 1 和 -1 的值都为真, 所以 !1 和 !-1 就等价于 false. 代码压缩(uglifyjs)工具会利用这个技巧来达到减少代码 size 的作用. 但请注意, 没有人会在手写的源码里使用这种方式来替代 false.

!!x 这种就写法就比较通用了, 很多知名项目里(vue)都存在这种写法. 作用是类型转换, 把 x 转化为相应的布尔值.

你看最小化的JavaScript代码都是这么写的,很多true or false也是很占空间,各方面都要省点。

js压缩.zsbd

说实话,我觉得这样写增加学习成本,没必要

编译时候快,uglify 压缩这些最后应该多是这样的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏