如何获取存储在数组中的函数的索引?以下代码返回 -1
var myArray = [ function(){console.log('fct1')} ];
myArray.indexOf( function(){console.log('fct1')} );
更多详情:
我正在使用 jQuery 来委托(delegate)事件。每个事件都有一个或多个要调用的回调函数。我不可能知道这些功能是什么,因为它们没有预先编码。每个回调函数将存储在一个数组中。添加新的回调函数时,我想验证它是否已在数组中,以避免事件同时调用的重复项。
最佳答案
JavaScript 中的任何对象 都不等于类似的东西,除了它自己。
var func = function() {
console.log('fct1')
};
console.log(Object.prototype.toString.call(func));
# [object Function]
因为函数也是 JavaScript 中的对象,所以您不能用另一个函数 object 来搜索一个函数 object 。
为了能够得到匹配,你需要使用相同的函数对象,像这样
var func = function() {
console.log('fct1')
};
var myArray = [func];
console.log(myArray.indexOf(func));
# 0
关于javascript - 将函数保存在数组中,并检索其索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403191/