che ho visto di domande che suggerisco di usare:JavaScript - Sfumature di myArray.forEach vs abbondanza per ciclo
for (var i = 0; i < myArray.length; i++){ /* ... */ }
invece di:
for (var i in myArray){ /* ... */ }
per gli array, a causa di iterazione incoerente (see here).
Tuttavia, non riesco a trovare nulla che sembra preferire l'oggetto ciclo orientato:
myArray.forEach(function(item, index){ /* ... */ });
che sembra modo più intuitivo per me.
Per il mio progetto attuale, IE8 compatibilità è importante, e sto pensando di utilizzare Mozilla's polyfill, però io non sono sicuro al 100% di come questo funzionerà.
- Ci sono delle differenze tra lo standard per ciclo (il primo esempio di cui sopra) e l'attuazione Array.prototype.forEach dai browser moderni?
- C'è qualche differenza tra le moderne implementazioni del browser e l'implementazione di Mozilla collegata a sopra (con particolare riguardo a IE8)?
- Le prestazioni non sono un problema, ma solo la coerenza con le proprietà iterate.
Non è possibile 'break' di' forEach'. Ma un grande vantaggio è creare un nuovo scope con la funzione. Con il polyfill non dovresti avere problemi (almeno non ne ho incontrato nessuno). – hgoebl
I problemi che si possono avere con IE precedente, non sono lo shim stesso, ma il costruttore dell'array rotto/letterale 'fori' dove' indefinito' dovrebbe essere e altri metodi rotti, come 'slice' e' hasOwnProperty' wrt in DOM arraylike oggetti. I miei test e ['es5 shim'] (https://github.com/es-shims/es5-shim) hanno dimostrato che i metodi di spalmatura sono conformi alla specifica (non testato lo shim di MDN). – Xotic750
E a rompere con un ciclo 'for', questo è ciò che [' some'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some) è per . – Xotic750