javascript - 将函数保存在数组中,并检索其索引

标签 javascript arrays function

如何获取存储在数组中的函数的索引?以下代码返回 -1

var myArray = [ function(){console.log('fct1')} ];
myArray.indexOf( function(){console.log('fct1')} );

jsFiddle

更多详情:
我正在使用 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/

相关文章:

javascript - 无法沿 y 轴向下移动对象 - Raphael、Javascript、SVG

c - 如何将未知大小的字符串数组传递给 C 中的函数

javascript - 找到字符串中最长的单词?

c - 如何在 C 中调用带有结构的函数?

c - 简单的 C 函数调用

javascript - 按引用复制

javascript - 没有警告消息如何在表单的下方文本字段中显示错误消息

javascript - 在 for 循环中从 UL 中删除 LI (JS)

php - 难以使用 PHP 和 mySQL 显示二维数组

sql - Json数组列拆分成行SQL