2015-04-16 1 views
7

mi chiedevo se ci fosse una differenza specifica nell'attuazione di un iteratore utilizzando la funzione di @@iterator rispetto al Symbol.iterator uno:ES 6: Differenza tra Symbol.iterator e @@ iteratore

Si NDP, c'è una pagina su [email protected]@iterator , tuttavia negli esempi stessi, Symbol.iterator viene utilizzato come nome della funzione. Questa è solo la versione aggiornata e @@iterator non è più valida o entrambe sono valide?

+1

questo può aiutare : http://stackoverflow.com/q/29492333/218196 –

risposta

6

Non c'è la funzione @@iterator. Questo token genera un errore di sintassi: è only used in specification per indicare un simbolo specifico.

Se si desidera utilizzare tale simbolo nel codice, ad es. per accedere agli iteratori su array, è necessario utilizzare Symbol.iterator. Che è una proprietà della classe Symbol inizializzata per avere il valore @@iterator.

2

La specifica ECMAScript 2015 (ES6) utilizza come riferimento Symbol.iterator. Non c'è @@iterator, e ovunque tu lo veda, leggilo come Symbol.iterator.

penso (qualcuno più familiarità con le specifiche ECMAScript potrebbe essere in grado di eseguire questo in su) la ragione @@iterator viene utilizzato perché è necessario per accedere alle proprietà di simboli su un oggetto utilizzando le parentesi quadre ([]), ma la maggior parte delle parti del specifiche ES2015 (e documentazione) hanno utilizzato il più familiare dot-concetto (ad esempio object.property contro object["property"]), and so @@ somesymbol` viene utilizzato per mantenere le cose coerenti

Vedere pagina 38 (contrassegnata come pagina 18):. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf