indexOf始终为document.location返回true

时间:2012-01-19 15:50:20

标签: javascript dom

我有以下脚本:

if (window.location.href.indexOf('env=P')) {      
  env = 'P';
  console.log("P");
} else {
  env = 'A';
  console.log("A");
}   
无论网址是什么,

env始终等于P.我很确定我之前使用过indexOf来表示uri,但我不确定这里的问题。

3 个答案:

答案 0 :(得分:4)

那是因为indexOf没有返回0,因此被评估为true。尝试更改为

if (window.location.href.indexOf('env=P') > -1)

答案 1 :(得分:3)

如果子字符串不在字符串中,

indexOf将返回-1,而-1true值。

这是因为它返回子字符串的索引(因此'foo'.indexOf('f')将返回0)。

您的支票应该是:

if (location.href.indexOf('env=P') >= 0) {

答案 2 :(得分:0)

indexOf如果没有匹配则返回-1,那就是Truthy值,你需要明确;

if (window.location.href.indexOf('env=P') === -1) {   
  ///no match