0

我有一个这样的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?假设不是(因为第一次我已经添加了该数组)

我在这里做错了什么吗?

4

1 回答 1

1

inArray只有当它们是完全相同的对象实例时,对象才彼此相等(因此只会触发检查) 。

例如:

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

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

于 2013-07-12T18:56:58.140 回答