Admettons que vous vouliez utiliser forEach sur une NodeList. Par exemple :

>>> // On récupère les images existantes :
>>> var images = document.querySelectorAll('img');
>>> console.log(images);
NodeList [ <img>, <img> ]

>>> // Et pour chaque image...
>>> images.forEach(function(image) {
>>>     // ... Faire quelque chose
>>> });
TypeError: images.forEach is not a function

Pour se faire, il suffit de convertir la NodeList en Array à l'aide de la méthode Array.prototype.slice. La documentation nous dit :

La méthode slice() peut aussi être appelée pour convertir des objets/collections similaires à des tableaux, en un nouveau tableau.

On l'utilise tel que var list = Array.prototype.slice.call(NodeList);.

Et dans notre cas, ça donne :

>>> var data = document.querySelectorAll('img');
>>> var images = Array.prototype.slice.call(data);
>>> console.log(images);
Array [ <img>, <img> ]

C'est tout !


Édito 2019-11-11

Je viens de découvrir une méthode encore plus simple et plus courte (source) :

>>> var images = [...document.querySelectorAll('img')];
>>> console.log(images);
Array [ <img>, <img> ]