trim()去除字符串首尾所有空白字符,trimStart()仅去除开头空白,trimEnd()仅去除结尾空白;三者均返回新字符串且不修改原串。

JavaScript 中去除字符串空格,trim() 和 trimStart() 是最常用且原生支持的方法,无需额外依赖,兼容性也较好(现代浏览器和 Node.js 10+ 均支持)。
trim():去掉首尾所有空白字符
trim() 会移除字符串开头和结尾的**所有空白字符**,包括空格、制表符(\t)、换行符(\n)、回车符(\r)、垂直制表符(\v)、换页符(\f)等 Unicode 空白字符。
它不会影响字符串中间的空格:
-
" hello world ".trim()→"hello world" -
"\n\t abc \r\n".trim()→"abc" -
"a b c".trim()→"a b c"(中间空格保留)
trimStart():只去开头空白,保留结尾
trimStart()(也可写作 trimLeft(),后者是别名,行为完全一致)仅清除字符串**开头**的空白字符,结尾部分原样保留。
立即学习“Java免费学习笔记(深入)”;
适合需要保留末尾格式或对齐的场景,比如处理用户输入后仍需保留右对齐空格、日志前缀清理等:
-
" hello ".trimStart()→"hello " -
"\t\n data".trimStart()→"data" -
"text ".trimStart()→"text "
对应还有 trimEnd():只去结尾空白
虽然问题没提,但为完整性说明:trimEnd()(别名 trimRight())与 trimStart() 对称,只清理字符串末尾空白:
-
" hello ".trimEnd()→" hello" -
"abc\t\n".trimEnd()→"abc"
这三个方法都**返回新字符串**,不修改原字符串(字符串在 JS 中是不可变的)。
兼容性与替代写法(如需支持旧环境)
若需兼容 IE 或极老版本运行时,可手动实现简易 trim():
-
str.replace(/^\s+|\s+$/g, '')(\s匹配标准空白字符) - 更严谨的 Unicode 兼容版可用
/^[\uFEFF\x20\x09\x0A\x0B\x0C\x0D\x85\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+|[\uFEFF\x20\x09\x0A\x0B\x0C\x0D\x85\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+$/g
不过现在绝大多数项目已无需考虑 IE,直接用原生方法更简洁可靠。










