2011-12-21 176 views
12

我学习JavaScript和不明白为什么下面的indexOf返回-1:为什么IndexOf返回-1?

var string = "The quick brown fox jumps over the lazy dog"; 

console.log (string.indexOf("good")); 

回答

18

-1表示 “没有找到匹配”。

返回-1而不是“false”的原因是字符串开头的指针位于位置0,这相当于在Javascript中为false。所以返回-1确保你知道实际上没有匹配。

+0

这就是我正在寻找的。谢谢。 – 2011-12-21 06:39:47

8

-1表示没有找到匹配。 “好”不在这句话中。这是documentedbehaviour

indexOf()方法返回在该给定元素可以在阵列中可以找到,或者如果-1它不存在的第一个索引。

7

因为数组是基于0的,所以返回0意味着从第一个字符开始匹配; 1,第二个字符,等等。这意味着0和以上的任何东西都是真实或“找到”的答案。要将所有内容保留在整数类别中,-1表示找不到匹配项。

1

indexOf在找不到匹配时返回-1还有另一个原因。考虑下面的代码:

if (~str.indexOf(pattern)){ 
    console.log('found') 
}else{ 
    console.log('not found') 
} 

由于〜(-1)= 0,所以实际上的indexOf返回-1使得它更容易编写,如果...其他使用〜。