Я изучаю Javascript и не понимаю, почему indexOf ниже возвращает -1:
var string = "The quick brown fox jumps over the lazy dog";
console.log (string.indexOf("good"));
Я изучаю Javascript и не понимаю, почему indexOf ниже возвращает -1:
var string = "The quick brown fox jumps over the lazy dog";
console.log (string.indexOf("good"));
-1 означает "нет совпадения найдено".
Причина, по которой он возвращает -1 вместо "false", заключается в том, что игла в начале строки будет в позиции 0, что эквивалентно false в Javascript. Поэтому возврат -1 гарантирует, что вы знаете, что на самом деле нет совпадения.
-1 означает, что совпадение не найдено. "добро" не входит в это предложение. Это задокументировано поведение.
Метод
indexOf()
возвращает первый индекс, в котором данный элемент может быть найден в массиве, или-1
, если он отсутствует.
Поскольку массивы основаны на 0, возврат 0 означает, что начиная с первого символа было сопоставлено; 1, второй символ и т.д. Это означает, что все 0 и выше будут истинным или "найденным" ответом. Чтобы сохранить все в целочисленной категории, -1 означает, что совпадение не найдено.
Есть еще одна причина, по которой indexOf возвращает -1, если совпадение не найдено. Рассмотрим следующий код:
if (~str.indexOf(pattern)){
console.log('found')
}else{
console.log('not found')
}
Поскольку ~ (-1) = 0, то факт, что indexOf, возвращающий -1, упрощает запись, если... else использует ~.
Поиск никогда не находит того, что он ищет ( "хорошее" не находится в предложении), а -1 - возвращаемое по умолчанию значение.