trimEnd()精准清除字符串末尾的Unicode空白字符(如空格、制表符、换行符等),不改动开头和中间内容,适用于清理代码片段尾部冗余空格;IE不支持,可用replace(/\s+$/,'')或polyfill兼容。

trimEnd() 能精准清除字符串末尾的空白字符(空格、制表符、换行符等),不碰开头和中间,适合处理代码片段尾部冗余空格。
识别哪些空格会被移除
该方法移除的是 Unicode 标准定义的“空白字符”,包括:
- 普通空格 U+0020
- 制表符 \t (U+0009)
- 换行类字符:\n (U+000A)、\r (U+000D)、\u2028(行分隔符)、\u2029(段落分隔符)
- 其他如 \f (U+000C)、\u0085(下一行)等
在代码片段处理中直接使用
原始代码常因编辑器自动补全或复制粘贴带有多余换行或空格。可这样清理:
const rawCode = `function hello() {\n console.log("hi");\n}\n\n `;
const cleaned = rawCode.trimEnd();
// → 结果末尾换行和空格全部消失,但内部缩进和首行保留
配合其他方法做完整清洗
仅用 trimEnd() 不够时,可组合使用:
- 只去尾部空格:用 .trimEnd()
- 同时去首尾:用 .trim()
- 去尾部空行(含空行+空格):先 .split('\n'),再 .filter(line => line.trim() !== ''),最后 .join('\n')
- 保留语义换行、只删无意义尾缀:正则补充更精准控制,例如 .replace(/[\s\u2000-\u206F\u2E00-\u2E7F\u3000-\u303F]+$/u, '')
注意浏览器兼容性与替代方案
IE 完全不支持 trimEnd(),如需兼容旧环境:
- 可用 .replace(/\s+$/, '') 替代(但只匹配 ASCII 空白,不覆盖所有 Unicode 空白)
- 引入 polyfill,或使用 Lodash 的 trimEnd(str)
- 现代项目(ES2019+)可放心使用,Chrome 66+、Firefox 61+、Safari 12+ 均已支持

















