[...nodelist]
wird eine Reihe von aus einem Objekt machen, wenn das Objekt iterable ist.
Array.from(nodelist)
wird ein Array aus einem Objekt machen, wenn das Objekt iterable ist oder wenn das Objekt Array-like (hat .length
und numerische Requisiten)
Ihre zwei Beispiele identisch sein wird, wenn NodeList.prototype[Symbol.iterator]
vorhanden ist, weil beide Fälle Iterables abdecken. Wenn Ihre Umgebung nicht so konfiguriert wurde, dass NodeList
iterierbar ist, schlägt Ihr erstes Beispiel fehl, und die zweite wird erfolgreich sein. Babel
derzeit does not handle this case properly.
Wenn also Ihre NodeList
iterierbar ist, liegt es wirklich an Ihnen, welche Sie verwenden. Ich würde wahrscheinlich von Fall zu Fall wählen. Ein Vorteil von Array.from
ist, dass es ein zweites Argument einer Zuordnungsfunktion benötigt, während das erste [...iterable].map(item => item)
ein temporäres Array erstellen müsste, würde Array.from(iterable, item => item)
nicht. Wenn Sie die Liste jedoch nicht zuordnen, spielt dies keine Rolle.
Grundsätzlich machen beide Methoden das gleiche. Wenn Sie 'babel' verwenden, dann' '[... coll]' wird einfach 'Array.from (coll)' für alles aufrufen, was kein 'Array' ist. –
FWIW, '...' Syntax kann von älteren IDEs nicht unterstützt werden, während 'Array.from()' nur eine normale Methode ist. –