2

当我在 Safari 6.0 中评估以下 javascript 时:

Array.indexOf([1,2,3],3)

它返回 -1,本质上说 3 不在数组中!

但在 Firefox 中,它正确返回 2。

我知道 Array.indexOf 是一个相对较新的函数,所以我有代码来测试它是否存在,如果不存在则定义它。然而,这个功能似乎是内置于 Safari 中的。

这是一个错误,还是我做错了什么?

编辑:这实际上是问题的简化版本。我实际上在做的是试图在 TR 中定位 TD 单元的索引:

var tr = td.parentNode
var col = Array.indexOf(tr.cells,td)

tr.cells没有indexOf. 但是,使用Array.indexOf我可以这样对待它,至少在 Firefox 中是这样。在 Safari 中,这不起作用。

我想在这种情况下我实际上可以使用 cellindex,但如果没有定义,我将如何获取索引?

4

1 回答 1

7

我想知道你为什么不按预期使用它:

[1,2,3].indexOf( 3 );

除非是学术问题。在这种情况下,它实际上是一个bug特殊的 Firefox 实现。如果你想Array.prototype直接使用这个版本,你应该去喜欢

Array.prototype.indexOf.call([1,2,3], 3);
于 2012-08-23T16:06:39.267 回答