indexOf всегда возвращает true для document.location - PullRequest
2 голосов
/ 19 января 2012

У меня есть следующий скрипт:

if (window.location.href.indexOf('env=P')) {      
  env = 'P';
  console.log("P");
} else {
  env = 'A';
  console.log("A");
}   

env всегда равно P независимо от того, какой URL. Я вполне уверен, что раньше использовал indexOf для URI, но не уверен, что проблема здесь.

Ответы [ 3 ]

4 голосов
/ 19 января 2012

Это потому, что indexOf не возвращает 0 и поэтому оценивается как true. Попробуйте перейти на

if (window.location.href.indexOf('env=P') > -1)
3 голосов
/ 19 января 2012

indexOf вернет -1, если подстрока отсутствует в строке, а -1 - это значение true.

Это потому, что он возвращает индекс подстроки (поэтому 'foo'.indexOf('f') будет возвращать 0).

Ваш чек должен быть:

if (location.href.indexOf('env=P') >= 0) {
0 голосов
/ 19 января 2012

indexOf возвращает -1, если совпадений нет, то есть значение Truthy, вам нужно быть явным;

if (window.location.href.indexOf('env=P') === -1) {   
  ///no match   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...