将函数保存在数组中,然后检查它,但始终返回-1

时间:2013-07-12 18:46:24

标签: javascript jquery

我有一个像这样的javascript函数(我使用jquery)

$(document).ready(function() {
    var arr = [];

    function addArray(item) {
        var alreadyIn = jQuery.inArray(item, arr);

        alert("already in : " + alreadyIn);

        if (alreadyIn == -1) {
            alert("going to push it")
            arr.push(item);
            alert("after push : " + arr)
        }
    }

    addArray(function(mgs) {
        alert("hai 1");
    });

    addArray(function(mgs) {
        alert("hai 1");
    });
});

为什么当我调用第二个addArray时,jQuery.inArray总是返回-1?假设没有(因为我第一次添加那个数组)

有什么我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

如果对象与对象的实例完全相同,则对象仅相互相等(因此仅触发inArray检查)。

例如:

var a = {}, b = {}, c = a;
a == b // false, different instances
a == c // true, same instance

您的两个功能可能相同,但它们仍然是两个功能,而不是相同的功能。