piapia123
zh

JavaScript 缩进美化

格式化

所有处理都在浏览器本地完成,数据不上传服务器

输入
输出

把压缩成一行的 JavaScript 按大括号与分号重新排版:代码块逐层缩进、语句各自成行、} else { 保持一体、短对象字面量留在同一行。它只做缩进,不做语法解析 —— 正则字面量里的括号、模板字符串里的表达式都不参与结构判断,所以结果在这一类写法上可能不准。字符串与注释的内容一律原样搬运,除空白之外不改动任何字符,也不会插入或删除分号。

功能

  • 按大括号层级缩进,} 退回到对应的层级
  • 分号断行;for (;;) 里的分号是分隔符,不断行
  • } else {、} catch {、} finally { 保持在同一行
  • 对象字面量保持单行(内容里没有分号且不长),代码块展开
  • 类体一定展开成多行
  • 字符串、模板字符串(含嵌套模板与 ${} 表达式)、注释的内容原样保留
  • 行注释后强制断行,后面的代码不会被注释吃掉
  • 只在语法上无歧义的位置补空白:逗号之后、控制关键字与括号之间
  • 不改动运算符周围的空白,不插入也不删除分号
  • 已知限制:不做词法分析,正则字面量里的括号会被当成结构括号

使用方法

  1. 把 JavaScript 粘贴进输入框
  2. 选择缩进宽度
  3. 按 Ctrl/⌘ + Enter 或点「运行」
  4. 点「复制」取走结果

常见问题

为什么正则字面量会让结果错位?
分不清 / 是除号还是正则开头,需要一整套词法分析(还要处理一元与二元运算符),判断错了会把后面整段代码当成正则吞掉。与其做错,不如把限制写清楚:正则里出现 { } ( ) 时缩进可能不准。
运算符周围的空格为什么没有补齐?
给 a=b 补空格要先分清一元与二元运算符(a - -b、i++、x=-1),那属于词法分析的范围,猜错会改动代码的含义。这个工具只做缩进,保证不会因为猜错而改坏代码。
会改变代码的运行结果吗?
除空白之外不改动任何字符 —— 分号、括号、运算符、字符串内容一个都不动。可以用「把空白全部去掉再比对」的办法自己核对。
代码会被上传吗?
不会。全部处理在浏览器内存里完成,页面不发任何请求,断网也能用。

相关工具