You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向含内容的字符串调用indexOf()与lastIndexOf()传入空字符串的结果疑问

indexOf/lastIndexOf 空字符串返回结果底层逻辑

你给出的示例代码运行结果完全符合ECMAScript规范定义:

let foo = 'A';
foo.indexOf(''); // 0
foo.lastIndexOf(''); // 1

核心原因如下:

  • 字符串的查找位置对应的是字符之间的间隙,而非单个字符的点位。长度为n的字符串,共有n+1个有效间隙,索引范围为[0, n]。
    对长度为1的字符串'A'来说,只有两个有效间隙:索引0在字符A左侧,索引1在字符A右侧(刚好等于foo.length的取值1),不存在索引为2的有效位置。
  • indexOf查找空字符串时,默认从起始位置开始匹配,返回第一个匹配的间隙索引,因此返回0。
  • lastIndexOf查找空字符串时,默认从等于字符串长度的位置向前匹配,返回最后一个匹配的间隙索引,因此返回1。

你可以用更长的字符串验证该规则的一致性:

let testStr = 'Hello'; // 长度为5
testStr.indexOf(''); // 0
testStr.lastIndexOf(''); // 5,和字符串长度完全相等

内容的提问来源于stack exchange,提问作者nCardot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:36:03