JavaScript中字符串重复推荐使用ES6的`repeat()`方法,接受非负整数参数,返回新字符串;传入负数或NaN会抛出错误。兼容旧环境可通过`Array(n+1).join(str)`实现,需处理边界与类型转换。注意字符串不可变、小数向下取整及大次数性能问题。
JavaScript String 字符串重复方法实现
作者:技术拾光
时间:2026-07-27
浏览:612
文章目录
在 JavaScript 中处理字符串重复,最直接、最省心的方式就是 ES6 带来的 String.prototype.repeat() 方法。简洁、高效、语义清晰,一行代码即可完成字符串重复操作。

使用原生 repeat() 方法(推荐)
repeat() 接受一个非负整数参数,返回将原字符串重复指定次数后的新字符串。例如:
"a".repeat(3)→"aaa""hi ".repeat(2)→"hi hi ""x".repeat(0)→""(空字符串)- 传入负数、
NaN或大于2^311的值会直接抛出RangeError,因此调用前建议做好参数校验。
兼容旧环境的手动实现(如 IE)
如果项目需要兼容 IE 等老旧浏览器,repeat() 方法可能不存在。此时可以自行封装一个 polyfill 或工具函数。实现思路如下:
- 用空字符串初始化结果,然后通过循环拼接;
- 或者利用数组技巧:
Array(n + 1).join(str)。当n === 0时,Array(1).join(str)返回空字符串,符合预期; - 更健壮的写法会处理边界情况和类型转换:
function repeat(str, count) {
if (typeof str !== 'string') str = String(str);
count = Math.floor(Number(count));
if (count < 0 || !isFinite(count)) return '';
return Array(count + 1).join(str);
}
注意点与常见误区
字符串重复操作看似简单,但有几个容易忽略的细节:
repeat()不会修改原字符串,始终返回一个新字符串——JavaScript 中字符串本身不可变,这一点与其他字符串方法一致。- 传入小数时会被自动向下取整,例如
"x".repeat(2.9)等价于"x".repeat(2),不会四舍五入。 - 如果重复次数非常大(如百万次),需注意内存溢出或性能问题。此类场景应提前评估业务合理性,避免过度使用。
- 避免使用
for循环反复+=拼接长字符串——尽管 V8 等引擎已有优化,但数组join或repeat()方法依然更可靠且更易读。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。