listeners数组长度是3而不是2的原因是因为在代码中,我们先将一个匿名函数作为事件监听器添加到listeners数组中,然后又将同一个匿名函数作为事件监听器添加到listeners数组中。这样做的结果是,listeners数组中存在两个相同的匿名函数。
在JavaScript中,当我们将一个函数作为事件监听器添加到数组中时,实际上是将该函数的引用添加到数组中。因此,尽管两个匿名函数的函数体是相同的,但它们是两个不同的函数对象。
所以,当我们在最后一个console.log中打印listeners数组的长度时,它的长度是3,因为数组中存在两个相同的匿名函数。
领取专属 10元无门槛券
手把手带您无忧上云