Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么IndexOf返回-1?_Javascript_Indexof - Fatal编程技术网

Javascript 为什么IndexOf返回-1?

Javascript 为什么IndexOf返回-1?,javascript,indexof,Javascript,Indexof,我正在学习Javascript,不明白为什么下面的indexOf返回-1: var string = "The quick brown fox jumps over the lazy dog"; console.log (string.indexOf("good")); -1表示未找到匹配项。“好”不在那句话里。这是 indexOf() 搜索永远不会找到它要找的东西(“good”不在句子中),并且-1是默认的返回值 -1表示“未找到匹配项” 它返回-1而不是“false”的原因是字符串开头的

我正在学习Javascript,不明白为什么下面的indexOf返回-1:

var string = "The quick brown fox jumps over the lazy dog";

console.log (string.indexOf("good"));
-1表示未找到匹配项。“好”不在那句话里。这是

indexOf()


搜索永远不会找到它要找的东西(“good”不在句子中),并且-1是默认的返回值

-1表示“未找到匹配项”


它返回-1而不是“false”的原因是字符串开头的指针将位于位置0,这相当于Javascript中的false。所以返回-1可以确保您知道实际上没有匹配。

因为数组是基于0的,返回0意味着从匹配的第一个字符开始;1、第二个字符,依此类推。这意味着0及以上的任何内容都将是真实的或“已找到”的响应。要保留整数类别中的所有内容,-1表示未找到匹配项。

当未找到匹配项时,indexOf返回-1还有另一个原因。考虑下面的代码:

if (~str.indexOf(pattern)){
  console.log('found')
}else{
  console.log('not found')
}

因为~(-1)=0,所以indexOf返回-1的事实使得如果……否则使用~,写起来更容易

相关问题;即使主词存在于句子(从语义上讲)或任何部分匹配的字母序列中,indexOf()也会返回其第一个匹配字母的索引。e、 g

const string = "The quick brown fox jumps over the lazy dog";
console.log(string.length);
// expected output: 43

console.log (string.indexOf("fox"));
// expected output: 16

console.log (string.indexOf(" q"));
// expected output: 3
但是,如果字母的部分序列与字符串数组的任何部分都不匹配,则该方法将返回-1,与“good”的大小写相同

以防万一,可以使用split()方法将长字符串按空格(标点符号)拆分,将其转换为子字符串数组(此处为单词)


这就是我要找的。谢谢。“它返回-1而不是“false”的原因是字符串开头的指针将位于位置0,这在Javascript中相当于false。因此返回-1确保您知道实际上没有匹配。”如果使用严格的比较,如
0===false
JS返回
false
(与
undefined
null
相同),因此似乎没有任何理由使用
-1
,因为您可以检查所有这些更直观的值。JS arelady有两个“空”值-
undefined
null
,为什么不使用它们呢?。
console.log (string.indexOf("foxy"));
// expected output: -1

console.log (string.indexOf("good"));
// expected output: -1
const words = string.split(' ');
console.log(words);
// expected output: ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]

console.log(words.indexOf("fox"));
// expected output: 3