为何"hello".indexOf("")与"hello".indexOf("h")返回值均为0?
为什么"hello".indexOf("")返回0?
这得从indexOf的匹配逻辑和空字符串的特性说起:
indexOf的核心是找子串首次出现的起始索引,而空字符串是长度为0的特殊字符串——它可以被视为"存在"在原字符串的任意位置:开头、每个字符之间、甚至结尾。- 当你用
indexOf("")时,它会直接返回第一个能匹配到空串的位置,也就是字符串的起始索引0。毕竟从0这个位置开始,完全能匹配一个零长度的空串。 - 打个比方:把"hello"拆成
""h""e""l""l""o"",每个""都是空串的位置,第一个就在最开头的0索引处,所以结果自然是0。 - 另外按照JS的规范,只要原字符串不是空串,查找空串都会返回0;要是原字符串也是空串,返回的也是0,因为两个空串完全匹配。
内容的提问来源于stack exchange,提问作者Pippal B.
相关产品推荐
相关产品推荐

