string.prototype.repeat()方法用于生成重复字符串,接受非负整数参数返回新字符串,小数向下取整,负数/infinity抛rangeerror,nan等转0;需校验输入并兜底防负;典型用途包括分隔线、填充、进度条等;ie不支持,可用array.join替代。

ES6 的 String.prototype.repeat() 方法能直接、简洁地生成重复文本,无需循环或数组拼接。它接受一个数字参数,返回由原字符串重复指定次数组成的新字符串,不修改原始值。
基本用法和合法参数
调用方式是 "原字符串".repeat(次数),关键规则如下:
- 次数为 非负整数:如
"x".repeat(4)→"xxxx" - 传
0返回空字符串:"abc".repeat(0)→"" - 小数会被自动向下取整:
"a".repeat(2.9)→"aa" - 负数、
Infinity会立即抛出RangeError -
NaN、undefined、空字符串转数字后为0,结果也是空串(但属隐式转换,不推荐依赖)
安全传参的常见写法
实际开发中,重复次数常来自用户输入、接口响应或表单字段,类型不可控。直接传入容易“静默失败”(比如 null 变成 0)。建议显式校验与转换:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 用
parseInt(count, 10)提取整数,再用Math.max(0, ...)保证非负 - 示例:
"-".repeat(Math.max(0, parseInt(userInput) || 0)) - 若需支持浮点输入并四舍五入,可改用
Math.round(parseFloat(count)),但仍要兜底防负
典型实用场景
repeat 不只是“重复字符”,而是快速构建结构化文本的利器:
-
分隔线/装饰符:
"=".repeat(60)生成控制台分隔线 -
占位填充:配合日志对齐,如
"INFO".padEnd(8) + " ".repeat(4) + "user login" -
简易进度条:
"█".repeat(loadingPercent / 10) + "░".repeat(10 - Math.floor(loadingPercent / 10)) -
固定宽度字段:生成 16 位订单号前缀补零:
"0".repeat(16 - id.length) + id
兼容性与替代方案
IE 全系列不支持 repeat(),旧版 WebView 或嵌入式 JS 引擎也可能缺失。需要兼容时可用:
-
Array 构造法:
Array(n + 1).join(str)(注意数组长度比次数多 1) -
带分隔符重复:
Array(n).fill(str).join(separator),如Array(5).fill("•").join(" ") -
循环拼接(仅限极低频、小数据量):
let res = ""; for (let i = 0; i










