# JavaScript 格式化与压缩 - 在线美化 JS、TS、JSX、JSON 代码

> 免费在线 JavaScript 格式化：一键美化或压缩 JS、TypeScript、JSX 与 JSON，可选 2/4 空格或 Tab 缩进与行宽，正确处理正则、模板字符串和不写分号的代码。

- 网址: https://qilingtools.com/zh/js-format
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [压缩](https://qilingtools.com/zh/tags/compress), [开发](https://qilingtools.com/zh/tags/dev), [代码格式化](https://qilingtools.com/zh/tags/format), [前端网页](https://qilingtools.com/zh/tags/frontend)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

从线上扒下来的压缩脚本挤成一行，接手的旧代码缩进混乱，或者只是想把一段 JSON、TypeScript 整理得清楚一些——把代码粘进来就能得到排版整齐的结果。格式化器是手写的：先用完整的词法分析识别字符串、模板字符串（包括嵌套的 ${}）、正则表达式与除号、注释、数字和 JSX，再按括号层级重新计算缩进，在分号和代码块后换行，规范运算符、逗号和关键字两侧的空格，对象和数组超过行宽时自动展开，只含数字或字符串的长数组会按行宽填充。它只调整空白：不增删分号、不改引号、不重命名变量，输出与输入的 token 序列完全一致，原有的空行最多保留一行，同一段代码格式化两次结果不变。TypeScript 的泛型、类型注解、可选参数、非空断言、装饰器、私有字段和 JSX 都能正确处理，合法的 JSON 会被识别并逐层展开。压缩模式会删除注释和多余空白（可保留 /*! 版权注释），但在可能触发自动分号插入（ASI）的地方保留换行，因此不写分号的代码压缩后语义不变。所有处理都在浏览器本地完成，代码不会上传。

## 使用步骤

1. 把 JavaScript、TypeScript、JSX 或 JSON 代码粘贴到左侧输入框
2. 选择格式化或压缩，设置缩进（2/4 空格或 Tab）和行宽
3. 在右侧查看结果，复制或下载 .js / .json 文件

## 功能特点

- 手写词法分析：正确识别正则、模板字符串与注释
- 支持 TypeScript 泛型、类型注解、装饰器与 JSX
- 2 / 4 空格或 Tab 缩进，行宽 80 / 100 / 120 可选
- 只改空白，不增删分号、不改引号，结果幂等
- 压缩时保留 ASI 需要的换行，不写分号的代码也安全
- 自动识别 JSON 并逐层展开
- 显示压缩前后体积对比
- 本地处理，代码不上传

## 常见问题

### 格式化会改变代码的运行结果吗？

不会。格式化只调整空格、换行和缩进，不增删分号、不改引号、不改变量名，输出与输入的 token 序列完全一致；新增的换行只出现在分号、括号和逗号之后等不影响自动分号插入的位置。我们用大量真实的 npm 包源码测试过：格式化和压缩后的代码都能通过 node --check，且 token 序列与原文相同。

### 支持 TypeScript、JSX 和 JSON 吗？

支持。TypeScript 的泛型（如 Map<string, T[]>、<T,>() =>）、类型注解、可选参数 x?、非空断言 x!、接口、类型别名、枚举和装饰器都能正确排版；JSX 元素会作为整体保留原样，只按新的缩进整体平移；输入是合法 JSON 时会自动识别并逐层展开。

### 压缩和专业打包工具有什么区别？

这里的压缩是“轻量压缩”：删除注释和多余空白，但不重命名变量、不做死代码消除，因此体积减少有限，好处是安全、可读性相对好、不需要构建流程。需要极致体积时，请在项目里使用 esbuild、Terser 等工具。压缩时会在可能触发 ASI 的换行处保留换行，所以不写分号的代码压缩后依然正确。

### 代码会上传到服务器吗？

不会。词法分析、格式化和压缩全部在浏览器里由 JavaScript 完成，没有任何网络请求，适合处理公司内部代码或含有密钥的配置文件。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
