我在做表格搜索时遇到这样一个问题:
我们都知道str.indexOf(子字符串)
返回的是子字符串在str中的位置。如果str中不存在子字符串,就返回-1.
可是一个非空字符串indexOf
空字符串,返回的为什么是0,不是-1?
请下面的小例子:
var str1='ascfg';
for(var i=0;i<str1.length;i++){
console.log('第'+i+'位:'+str1[i]);
}
console.log("str1.indexOf(''):"+str1.indexOf(''));
打印结果:
第0位:a
第1位:s
第2位:c
第3位:f
第4位:g
str1.indexOf(''):0
但是,如果子字符串是""空字符串
,str.indexOf("")
返回的是却0。
可是上面的例子中,第0位明明是a啊.
为什么会这样呢?
源码里有个条件是如果字符串长度等于0,返回0 (没有为什么,人家就说这样定义的)