Javascript $.iArray在IE7中的应用

Javascript $.iArray在IE7中的应用,javascript,jquery,internet-explorer,internet-explorer-7,Javascript,Jquery,Internet Explorer,Internet Explorer 7,我正在使用jQuery,并且我对IE7中的$.inArray有问题 $.inArray([],'test') 在IE7中,它返回0,但在Chrome中,它返回-1,就像它应该返回的那样 我在jQuery1.4.4和1.5.2中都测试了这一点,结果是一样的 为什么$.inArray在不同的浏览器中不返回相同的值 编辑:我只是把论点倒过来了,为什么我没有注意到? 但是,为什么Chrome给出了-1,而IE7给出了0?你的参数倒过来了。要查找的元素应该首先出现,然后是数组 以下是代码(来自1.5.0

我正在使用jQuery,并且我对IE7中的
$.inArray
有问题

$.inArray([],'test')
在IE7中,它返回0,但在Chrome中,它返回-1,就像它应该返回的那样

我在jQuery1.4.4和1.5.2中都测试了这一点,结果是一样的

为什么
$.inArray
在不同的浏览器中不返回相同的值

编辑:我只是把论点倒过来了,为什么我没有注意到?
但是,为什么Chrome给出了-1,而IE7给出了0?

你的参数倒过来了。要查找的元素应该首先出现,然后是数组

以下是代码(来自1.5.0):


在这里,裸变量“indexOf”是对“Array.prototype.indexOf”的隐藏引用。用“.call()”调用时,第一个参数是字符串,第二个参数是空数组,返回-1。

哇,我现在觉得自己很蠢。我应该注意到我的参数是反向的,但是,为什么IE和Chrome给出了不同的答案呢?@Rocket我认为“indexOf”测试是正确的,因为字符串对象确实有一个“indexOf”方法。因此,无论出于何种原因,IE7都在将空数组转换为使其认为字符串以该值开头的内容。我怀疑是空字符串,而空字符串是否出现在“test”的第一个位置是一个有趣的哲学问题:-)这确实很奇怪。我想不出为什么会发生这种情况,但显然是这样的…@Pointy:JavaScript将
[]
转换为
'
。哦,我也很享受啊哈!!看来我发布的“inArray”代码并不是图书馆使用的代码!我会更新答案。
  inArray: function( elem, array ) {
     if ( array.indexOf ) {
       return array.indexOf( elem );
     }

     for ( var i = 0, length = array.length; i < length; i++ ) {
       if ( array[ i ] === elem ) {
         return i;
       }
     }

     return -1;
    },
if ( indexOf ) {
  jQuery.inArray = function( elem, array ) {
    return indexOf.call( array, elem );
  };
}