endsWith()是ES6检测字符串结尾的原生方法,支持大小写敏感匹配和指定长度范围检查,不支持正则,现代环境原生支持,旧环境需手动截取或polyfill。

ES6 的 endsWith() 是专为检测字符串结尾设计的原生方法,简洁、可读性强,且支持灵活控制匹配范围。
基本用法:判断是否以指定子串结尾
只需传入要检查的后缀字符串,返回 true 或 false:
-
"report.pdf".endsWith(".pdf")→true -
"/api/users/".endsWith("/")→true -
"Hello world!".endsWith("World!")→false(大小写敏感) -
"abc".endsWith("")→true(任何字符串都以空字符串结尾)
进阶用法:限制检查范围(第二个参数 length)
第二个参数表示「只看前 length 个字符」,然后在这个截断后的子串末尾做匹配:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
-
"Hello world!".endsWith("o", 5)→true(前 5 个字符是"Hello",它以"o"结尾) -
"Hello world!".endsWith("lo", 5)→true("Hello"以"lo"结尾) -
"Hello world!".endsWith("llo", 4)→false(前 4 个字符是"Hell",不以"llo"结尾)
注意事项和常见避坑点
使用时需留意几个关键细节:
- 区分大小写,
"File.TXT".endsWith(".txt")返回false - 若后缀长度超过原字符串长度,自动返回
false(无需手动判断边界) - 第二个参数若为负数或大于字符串长度,会被自动截断为有效值(如超出则按全长处理)
- 不支持正则,特殊字符如
.、*按字面量匹配(无需转义)
兼容性与替代方案
现代浏览器和 Node.js 均原生支持;如需兼容 IE 等旧环境,可用以下任一方式降级:
- 手动截取:
str.slice(-suffix.length) === suffix(注意处理suffix过长的情况) - 用
lastIndexOf判断位置:str.lastIndexOf(suffix) === str.length - suffix.length - 引入 Polyfill(如 MDN 官方提供)

















