Почему IndexOf возвращает -1?

Я изучаю Javascript и не понимаю, почему indexOf ниже возвращает -1:

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

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

Ответ 1

-1 означает "нет совпадения найдено".

Причина, по которой он возвращает -1 вместо "false", заключается в том, что игла в начале строки будет в позиции 0, что эквивалентно false в Javascript. Поэтому возврат -1 гарантирует, что вы знаете, что на самом деле нет совпадения.

Ответ 2

-1 означает, что совпадение не найдено. "добро" не входит в это предложение. Это задокументировано поведение.

Метод indexOf() возвращает первый индекс, в котором данный элемент может быть найден в массиве, или -1, если он отсутствует.

Ответ 3

Поскольку массивы основаны на 0, возврат 0 означает, что начиная с первого символа было сопоставлено; 1, второй символ и т.д. Это означает, что все 0 и выше будут истинным или "найденным" ответом. Чтобы сохранить все в целочисленной категории, -1 означает, что совпадение не найдено.

Ответ 4

Есть еще одна причина, по которой indexOf возвращает -1, если совпадение не найдено. Рассмотрим следующий код:

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

Поскольку ~ (-1) = 0, то факт, что indexOf, возвращающий -1, упрощает запись, если... else использует ~.

Ответ 5

Поиск никогда не находит того, что он ищет ( "хорошее" не находится в предложении), а -1 - возвращаемое по умолчанию значение.

http://www.w3schools.com/jsref/jsref_indexof.asp