最常用、最简洁的方法是使用 string.prototype.padstart(),语法为 string(num).padstart(位数, '0'),可将数字转字符串后左侧补零至指定长度,不截断原数字。

JavaScript 中将数字补零转为固定位数字符串,最常用、最简洁的方法是使用 String.prototype.padStart()。
用 padStart() 快速补零
这是现代 JavaScript(ES2017+)推荐的方式,语法清晰,支持任意长度和任意填充字符:
-
语法:
String(num).padStart(位数, '0') - 先将数字转为字符串,再在左侧补零至指定总长度
- 如果原数字位数已达标,不会截断,也不会额外补零
示例:
123 .toString().padStart(5, '0') // "00123" 42 .toString().padStart(4, '0') // "0042" 7 .toString().padStart(3, '0') // "007" 1000.toString().padStart(3, '0') // "1000"(不截断,保持原样)
兼容旧环境:用 slice() + String() 拼接
若需支持 IE 或较老运行时,可用经典技巧:拼一个足够长的 "0" 前缀,再取末几位:
-
公式:
(Array(位数).join('0') + num).slice(-位数) - 或更简洁写法:
('0'.repeat(位数) + num).slice(-位数) - 注意:
repeat()在 IE 中也不支持,如需极致兼容,用Array(n+1).join('0')
示例:
('00000' + 123).slice(-5) // "00123"
('0000' + 42).slice(-4) // "0042"
('000' + 7).slice(-3) // "007"
其他方法对比说明
-
toFixed():仅适用于小数,且会四舍五入、强制带小数点(如
(12).toFixed(3) → "12.000"),不适合整数补零 -
自定义函数:可封装复用,但没必要重复造轮子;
padStart已足够健壮 - Number.prototype.toLocaleString():主要用于本地化格式(千分位、货币等),不用于补零
注意事项
- 负数需先处理符号,例如:
(num - 确保传入的是有效数字,
NaN或undefined会导致意外结果,建议加校验 - 位数参数必须是非负整数,否则
padStart直接返回原字符串
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











