includes()是ES6为String.prototype新增的字符串方法,用于检测是否包含指定子串并返回布尔值,支持起始索引参数,区分大小写,不支持正则,空字符串恒返回true。

includes() 是 ES6 为 String.prototype 新增的最常用字符串方法之一,专门用于简洁、直观地检测一个字符串是否包含指定子串,返回布尔值,语义清晰,彻底替代了过去 indexOf() !== -1 的写法。
基础用法:判断是否包含
直接传入要查找的子串,返回 true 或 false:
"Hello world".includes("world"); // true
"Hello world".includes("World"); // false(区分大小写)
"Hello world".includes("xyz"); // false✅ 优点:不用记返回值是索引还是 -1,逻辑一目了然。
指定起始位置:从某处开始搜
第二个参数是搜索起始索引(从 0 开始),不影响匹配内容,只限制搜索起点:
"banana".includes("na"); // true(默认从开头找)
"banana".includes("na", 2); // true(从索引 2 开始:"nana" → 找到 "na")
"banana".includes("na", 4); // true(从索引 4:"na" → 完全匹配)
"banana".includes("na", 5); // false(从索引 5 开始只剩 "a")⚠️ 注意:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 起始位置超出字符串长度,直接返回
false; - 负数会被当作
0处理(不支持倒序搜索,这点和indexOf不同)。
常见注意事项
-
只接受字符串,不支持正则表达式
"abc".includes(/a/); // TypeError: First argument to String.prototype.includes must be a string
-
严格区分大小写
如需忽略大小写,先统一转大小写再查:"Hello".toLowerCase().includes("HELLO".toLowerCase()); // true -
空字符串总是返回 true
"abc".includes(""); // true(任何字符串都“包含”空串) -
类型安全建议
若输入可能非字符串,建议提前转换或校验,避免意外false:function safeIncludes(str, search) { return String(str).includes(String(search)); }
对比旧写法:为什么推荐 includes()
| 写法 | 示例 | 缺点 |
|---|---|---|
indexOf() !== -1 |
"abc".indexOf("b") !== -1 |
语义模糊、易错写成 >= 0 或漏写比较 |
includes() |
"abc".includes("b") |
直接返回布尔值,意图明确,不易出错 |
它还和 Array.prototype.includes() 行为一致,学习成本低、API 统一。
不复杂但容易忽略。

















