1

有人可以向我解释一下 -1 在这个 if 语句中是什么意思/代表什么。

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

我认为的方式是做类似的事情(如果是真的那么做一些事情)

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

0 等于 1?这意味着它总是错误的,除非“路径名”存在成为真的?

这一直让我感到困惑。我应该使用 != -1、== 0 还是 >=0。

4

9 回答 9

1

indexOf 是一个函数,它在任何其他给定对象中定位对象的索引(位置),无论它是字符串中的字符,还是缓冲区中的字节......等等。

如果没有找到,出于安全目的,它返回 -1。这是因为 0 是对象中的索引。

例如:

"hello world"

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

因此,如果未找到它将是-1,如果找到它将是> =(大于或等于)0。所以基本上!= -1 和> = 0 将返回相同的输出。

于 2013-07-15T02:26:31.560 回答
1

.indexOf()旨在寻找匹配 - 在您的子字符串的情况下。如果函数找到匹配项,则返回它开始的索引。如果未找到匹配项,则返回 -1。您可以在此处阅读文档。

根据你的问题:

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)
};
于 2013-07-15T02:19:56.403 回答
1

根据docsindexOf如果在您的参数中找不到匹配的字符串,则返回 -1。否则,它会返回您的字符串的索引。

引用自文档:

返回可以在数组中找到给定元素的第一个索引,如果不存在则返回 -1。

于 2013-07-15T02:21:03.597 回答
1

-1 用于表示在搜索您提供的子字符串时不匹配。所有输出 > -1 表示在较大字符串中找到子字符串的起始位置

在这里阅读更多:http: //www.w3schools.com/jsref/jsref_indexof.asp

于 2013-07-15T02:21:28.753 回答
1

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

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

于 2013-07-15T02:22:11.383 回答
1

当未找到参数字符串时,indexOf 返回 -1。如果找到它,它也会返回 >=0。因此,如果您正在检查字符串是否出现, !=-1 和 >=0 是同一回事。如果匹配从第一个索引开始,则返回 0。

于 2013-07-15T02:22:19.180 回答
0

检查此链接http://www.w3schools.com/jsref/jsref_indexof.asp

请阅读一些教程并了解 indexOf()。顺便说一句,indexOf() 是 javascript 而不是 jQuery :)

于 2013-07-15T02:27:02.707 回答
0

-1 -- 里面没有这样的字符串

0 -- 可搜索的字符串在最开始(它的第一个符号是主题字符串中的 0 符号)

于 2013-07-15T02:20:03.813 回答
0

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

indexOf() 方法返回指定值在字符串中第一次出现的位置。

所以使用 >=0 检查子字符串是否在字符串中,使用 ==-1 检查子字符串是否不存在

于 2013-07-15T02:21:45.707 回答