2013-07-15 4 views
1

Может кто-нибудь, пожалуйста, объясните мне, что означает -1 в выражении if.Если условие не равно -1

if(window.location.href.indexOf("pathname") != -1) { 
    //do something 
    }; 

Я так думаю, что было бы сделать что-то подобное (если это правда, то что-то сделать)

if(window.location.href.indexOf("pathname") == 0) { 
    //do something 
    }; 

0 равно 1? Это означает, что он всегда является ложным, если существует «путь», который становится истинным?

Это смущает меня все время. Должен ли я использовать! = -1, == 0 или> = 0.

+1

Прежде всего, вы узнали, как работает метод indexOf()? Перед тем, как задать вопрос, пройдите через некоторое руководство по этому вопросу. – gjman2

ответ

1

IndexOf является функцией, которая определяет местонахождение индекса (положение) объект в любом другом данном объекте, будь то символ в строке, или байты в буфере, ... и т.д.

Если это не найден, только для целей безопасности он возвращает -1. Это связано с тем, что 0 является индексом в объекте.

Например:

"hello world" 

h = 0 
e = 1 
l = 2 
... 

так, если он не нашел, что это будет -1, и если он будет найден, он будет> = (больше или равно) 0 так, по существу = - 1 и> = 0 вернет тот же результат.

+0

Это отличная благодарность - начиная с этого – NickP

+0

@NickP без проблем! Печально видеть голоса, когда вы просто пытаетесь учиться. Надеюсь, вы по крайней мере понимаете это. :) – MysteryDev

+0

Да, я был немного разочарован, учитывая, что я знал, что это javascript - жесткая толпа. Во всяком случае, я буду осторожнее в следующий раз. Все ответы были полезными, поэтому я благодарен всем NickP – NickP

1

.indexOf() предназначен для поиска соответствия - в вашем случае подстроки. Если функция находит совпадение, она возвращает индекс, в который он запускается. Если совпадение не найдено, оно возвращает -1. Вы можете прочитать документы here.

По вашему вопросу:

if(window.location.href.indexOf("pathname") == 0) { 
    // code here will be executed only if your current URL 
    // starts with 'pathname' (0 is the first index in a String) 
}; 

if(window.location.href.indexOf("pathname") != -1) { 
    // code here will be executed only if your current URL 
    // contains the string 'pathname' (-1 means no match was found) 
}; 
+0

Спасибо Yotam - действительно начинаю понимать, как вы это объяснили – NickP

0

-1 - нет такой строки внутри

0 - для поиска строки в самом начале (его первый символ не является 0 Символическое обозначение в subject string)

1

Основано на docs, indexOf возвращает -1, если не соответствует совпадению строки в аргументе. В противном случае он возвращает индекс вашей строки.

Цитата документы:

Возвращает первый индекс, при котором данный элемент может быть найден в массиве, или -1, если его нет.

1

-1 используется, чтобы указывать, что при поиске подстроки вы не нашли соответствия. Все выходные> -1 указывает начальное положение, где подстрока была найдена в большей строки

Подробнее здесь: http://www.w3schools.com/jsref/jsref_indexof.asp

0

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

IndexOf() метод возвращает позицию первого появление указанного значения в строке.

Так что используйте> = 0, чтобы проверить, если подстрока в строке и == - 1, чтобы проверить, что подстроки является отсутствие

1

indexOf возвращает индекс, в которой подстрока начинается в строке, не a true/false в зависимости от наличия подстроки в вашей строке.

Строки и массивы с нулевым индексированием в JavaScript, поэтому возвращаемое значение 0 означает, что подстрока начинается в самом начале строки. -1 не является допустимым индексом, поэтому indexOf возвращает его, когда строка не найдена.

1

indexOf возвращает -1, когда строка параметров не найдена. Он также возвращает> = 0, если он найден.Поэтому, если вы проверяете, происходит ли строка или нет, то = = 1 и> = 0. Он возвращает 0, если совпадение начинается с первого индекса.

Смежные вопросы