在javascript中的str.indexOf()中搜索空字符串

在javascript中的str.indexOf()中搜索空字符串,javascript,Javascript,使用string.indexOf(searchValue[,fromindex])搜索空字符串返回以下代码段中给出的意外结果 console.log('foo'.indexOf('')//0 console.log('foo'.indexOf('',2))//2 console.log('foo'.indexOf('',3))//3 console.log('foo'.indexOf('',4))//3 console.log('foo'.indexOf('',100))//3它搜索第一个匹配

使用
string.indexOf(searchValue[,fromindex])搜索空字符串
返回以下代码段中给出的意外结果

console.log('foo'.indexOf('')//0
console.log('foo'.indexOf('',2))//2
console.log('foo'.indexOf('',3))//3
console.log('foo'.indexOf('',4))//3

console.log('foo'.indexOf('',100))//3
它搜索第一个匹配项,从第二个参数给定的位置开始(如果有)。但空字符串总是会尽快匹配;毕竟,这是一个空字符串。当您提供大于字符串长度的
fromIndex
时,它只需运行测试,就好像
fromIndex
是字符串的长度一样:

一个整数,表示开始搜索的索引;默认值为0。对于小于0或大于str.length的fromIndex值,搜索分别从索引0和str.length开始


空字符串无处不在,例如,对于您的第一个日志,空字符串存在于字符串的第一个中,您可以将“foo”视为“+”foo”,与其他日志相同。基本上,indexOf返回该对象表示的字符序列中第一次出现的字符的索引,如果该字符没有出现,则返回-1。

为什么意外?工作非常好“搜索空字符串”听起来像“被零除”。结果将是相似的。空字符串包含在字符串中的任何位置。因此indexOf方法可能希望返回任意数字。;-)仅当“needle”字符串符合if(!needle.isEmpty())时才搜索。我想您正在查找
if(!foo | | foo.trim()==”)
-听起来确实像是X/Y问题