LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

js里的 !0、!1 到底是啥?聊聊那些压缩器最爱的“极简写法”

freeflydom
2025年6月9日 10:14 本文热度 59

在阅读 JavaScript 源码,尤其是压缩后的代码时,很多人常常会遇到这样的片段:

if (!0) { /* ... */ }  // 等价于 if (true)
if (!1) { /* ... */ }  // 等价于 if (false)

这些诡异的语法你可能一开始会觉得费解,但其实是压缩器(比如 UglifyJS、Terser)为了追求 最小体积和最高性能 的结果。

这一类代码就是所谓的 JavaScript 压缩写法。它们压缩得极致,同时也保持了逻辑一致性。下面我们就系统聊聊有哪些经典写法、为啥这么写、哪些能用哪些要注意。


🧱 布尔值压缩:true/false 最短写法

语义原始写法压缩写法说明
truetrue!0逻辑真
falsefalse!1逻辑假
强制转布尔值Boolean(x)!!x常见强转布尔写法

!!x 是最经典的布尔转型写法,用得非常广泛,比如:

const isValid = !!user.id;

🧪 undefined 与 null 的压缩技巧

意图原始写法压缩写法说明
undefined 值undefinedvoid 0永远返回 undefined
判断 undefined 类型typeof x === 'undefined'typeof x == 'undefined'双等号足够安全
判断是否为 nullx === nullnull == x包括 null 和 undefined

void 0 是一个冷门但安全的写法,它绕过了 undefined 可能被覆盖的问题(老浏览器或者手动重写)。


🔁 条件逻辑压缩

原始写法压缩写法含义
x ? true : false!!x转换为布尔值
x ? x : y`x
x ? y : nullx && yx 存在则执行 y
if (x) return true;return !!x;简洁返回布尔

这些写法多数来自于逻辑短路的使用,既压缩代码,也提升性能(少一层判断)。


🔎 类型判断 & 替代操作符

原始写法压缩写法说明
typeof foo === 'function'typeof foo == 'function'双等号更短
Array.isArray(x)x instanceof Array兼容性略差,但更短
x !== undefinedvoid 0 !== x避免使用 undefined 字面量

压缩器通常偏好双等号,因为其字节更少。而 typeof 场景下使用双等号其实是安全的(因为不会触发类型转换)。


📦 数组与对象压缩

原始写法压缩写法说明
[1, 2, 3].length3直接写字面量节省字符
{a: a}{a}ES6 对象属性简写
obj['key']obj.key如果 key 合法,更短更直观

这些优化大多自动由现代压缩器处理,无需人工介入,但有助于理解源码。


📉 函数和箭头函数优化

原始写法压缩写法说明
function () {}()=>{}箭头函数更短
function(a){ return a*2 }a=>2*a单表达式更可简写

注意,箭头函数没有 this,不要盲目替换类方法等。


🧮 数学与位运算优化

原始写法压缩写法说明
Math.floor(x)~~x双按位取反等价于 floor
Math.pow(x, 2)x * x常数次方直接展开更快更短
parseInt(x, 10)`+x0`

但这些写法不要轻易使用在业务代码中,因为会让代码可读性大幅下降


🎲 Bonus:冷门但实用的压缩技巧

原始写法压缩写法说明
for (let i=0; i<n; i++)for(i=n;i--;)倒序遍历节省初始化代码
a != nullnull != a可以避免 null 和 undefined
x && x.fn()x?.fn()可选链更短,但需现代浏览器支持


✅ 写在最后:压缩写法是“写给机器的代码”

这些技巧大多来源于压缩器的优化逻辑,是写给机器看的代码

开发者日常业务中,并不推荐自己手动这么写。更推荐的是:

  • 业务代码保持可读性
  • 构建阶段交给打包工具压缩
  • 理解这些写法,能更好阅读源码、调试、做逆向

转自https://juejin.cn/post/7512699604632371250


该文章在 2025/6/9 10:14:49 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved