许多 JavaScript 库(jQuery、Zepto)似乎在 querySelectorAll()、getElementsByTag 或 ClassName 结果上调用 Array.prototype.slice.call...
通过阅读 StackOverflow 上许多类似的问题/答案,我确实明白它会将 NodeList 结果转换为真正的 Array,以便您可以对 NodeLists 上不可用的结果调用 Array 方法(切片、弹出) - 但我没有'不明白是为什么?您通常不需要在 DOM 节点列表上进行切片/弹出 + NodeLists 已经具有长度属性,因此无论如何它们都是可遍历的。
一些答案似乎暗示这是因为 NodeList 指向活动的 DOM 对象。但是如果你把它转换成一个数组,引用仍然指向活动的 DOM 节点——那么有什么区别呢?
还是我完全想念的其他东西?它是否有助于 Zepto/jQuery 以某种方式缓存 DOM 元素的多个属性调用?(虽然我真的不明白,因为这些仍然是实时的 DOM 引用)