[...nodelist]
creerà una matrice di un oggetto se l'oggetto è iterabile.
Array.from(nodelist)
farà una matrice su un oggetto se l'oggetto è iterabile o se l'oggetto è array simile (ha .length
e puntelli numerici)
per i due esempi saranno identici se NodeList.prototype[Symbol.iterator]
esiste, perché entrambi i casi coprono i iterabili. Se il tuo ambiente non è stato configurato in modo tale che NodeList
sia iterabile, il tuo primo esempio fallirà e il secondo avrà esito positivo. Babel
attualmente does not handle this case properly.
Quindi se il tuo NodeList
è iterabile, dipende solo da te che usi. Probabilmente sceglierei caso per caso. Uno dei vantaggi di Array.from
è che richiede un secondo argomento di una funzione di mappatura, mentre il primo [...iterable].map(item => item)
dovrebbe creare un array temporaneo, Array.from(iterable, item => item)
no. Tuttavia, se non stai mappando la lista, non importa.
Fondamentalmente, entrambi i metodi fanno la stessa cosa. Si sta usando 'babel', quindi' [... coll] 'chiamerà semplicemente' Array.from (coll) 'per tutto ciò che non è un 'Array'. –
FWIW, la sintassi '...' potrebbe non essere supportata dagli IDE precedenti mentre 'Array.from()' è solo un metodo normale. –