2011-12-21 223 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使得它更容易編寫,如果...其他使用〜。