Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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语句会产生错误_Javascript - Fatal编程技术网

Javascript 为什么我的indexOf语句会产生错误

Javascript 为什么我的indexOf语句会产生错误,javascript,Javascript,我正在尝试使用.indexOf来确定数组是否包含字符串。有什么东西导致了错误,但我不知道是什么。我确信这是一件非常简单的事情,但我不懂语言,所以看不出来。怎么了 //this code creates an error in IE var myMines=new Array(); var newMine="22"; var myVar = myMines.indexOf(newMine); //when I comment out this line, the page does not g

我正在尝试使用.indexOf来确定数组是否包含字符串。有什么东西导致了错误,但我不知道是什么。我确信这是一件非常简单的事情,但我不懂语言,所以看不出来。怎么了

//this code creates an error in IE
var myMines=new Array();
var newMine="22";
var myVar = myMines.indexOf(newMine);   //when I comment out this line, the page does not generate an error

您所做的一切都是创建一个数组,然后查看其中是否存在某些内容


newMine只是您试图在空数组中查找的值。尝试先填充数组。

在某些现代浏览器中添加索引之前,indexOf是一个专门用于搜索字符串以查找其他字符串并返回起始索引的函数。您试图在空数组上使用此函数,我猜是在不支持数组索引函数的浏览器中使用的。

您所做的基本上是:

  • 创建一个数组
  • 创建一个变量
  • 忘记将其添加到数组中
  • 询问数组中为nou的项的位置

您是否碰巧使用了IE 8(或更低版本)
Array.indexOf
仅适用于IE 9+、Firefox 3+和Chrome 7+

资料来源:


用于
Array.indexOf
的文档(还包括一个在不支持它的浏览器中实现此功能的函数):

我刚刚将您的代码发布到我的Firebug控制台(运行Firefox 11)中,它起了作用。由于数组在这里是“空的”,indexOf()只返回-1。也许您的脚本无法处理-1值。但是,我相信这段代码应该可以在大多数浏览器中使用。谁知道呢,也许你刚刚在chrome的javascript实现(^^)中发现了一个bug。

索引of返回字符串的当前索引/位置(0基),即

var myMines="Hello World";
var myVar = myMines.indexOf('W');
alert(myVar); // Will alert 6 because 'W' is at the 7th position (first index is 0) so index is 6

较旧的IE版本不支持数组的
indexOf
。另外,您遇到了什么错误?在Chrome和Firefox中适用于我。而且,在Chrome中不会产生错误。在您的例子中,myVar的值是-1您是否真的收到错误?你能把它包括在问题中吗?它不应该只返回-1吗?这不是错误<空数组上的code>indexOf将返回-1,这不是错误。
indexOf
是为数组添加的。在空数组上使用
indexOf
将只返回-1,而不是错误。
indexOf
是为数组添加的。谢谢你!在调用indexOf并返回索引时,字符串正在内部转换为数组,我知道,如果我错了,请告诉我。
indexOf
字符串和数组之间没有任何关系。这是否意味着相同的indexOf对字符串和数组的工作方式不同?不客气。实际上,我不知道
indexOf
的内部结构是如何工作的,但这对我们JavaScript程序员来说并不重要。