2013-07-15 68 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的在符号主题字符串)

1

根据docsindexOf如果在参数中未找到字符串匹配,则返回-1。否则,它将返回字符串的索引。从文档

引用:

传回在给定元素可以在阵列中可以发现,或-1,如果它不存在的第一个索引。

1

indexOf返回索引在该子串中的字符串开始,而不是一个true/false取决于您的字符串中的子字符串的存在。

字符串和数组在JavaScript中是零索引的,因此返回值0意味着子字符串从字符串的一开始就开始。 -1不是有效的索引,这就是为什么indexOf在未找到字符串时返回它的原因。

1

indexOf在未找到参数字符串时返回-1。如果找到,它也返回> = 0。所以如果你正在检查字符串是否发生,!= - 1和> = 0是同一件事。 如果匹配从第一个索引开始,则返回0。