Per ... in ciclo
Il ciclo for...in migliora le debolezze del ciclo for eliminando la logica di conteggio e condizione di uscita.
Esempio:
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const index in digits) {
console.log(digits[index]);
}
Ma, si devono ancora affrontare il problema di utilizzare un indice per accedere ai valori della matrice, e che puzza; fa quasi più confusione di prima.
Inoltre, il ciclo for ... in loop può causare grossi problemi quando è necessario aggiungere un metodo aggiuntivo a un array (oa un altro oggetto). Perché per ... loop in loop su tutte le proprietà enumerabili, questo significa che se aggiungi proprietà aggiuntive al prototipo dell'array, quelle proprietà appariranno anche nel ciclo.
Array.prototype.decimalfy = function() {
for (let i = 0; i < this.length; i++) {
this[i] = this[i].toFixed(2);
}
};
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const index in digits) {
console.log(digits[index]);
}
Stampe:
0
1
2
3
4
5
6
7
8
9
function() { for (let i = 0; i < this.length; i++) { this[i] = this[i].toFixed(2); } }
Questo è il motivo per ... in loop sono scoraggiati quando ciclare su array.
NOTE: The forEach loop is another type of for loop in JavaScript. However, forEach()
is actually an array method, so it can only be used exclusively with arrays. There is also no way to stop or break a forEach loop. If you need that type of behavior in your loop, you’ll have to use a basic for loop.
Per ... del ciclo
Il ciclo for...of viene utilizzato per un ciclo su qualsiasi tipo di dati che è iterabile.
Esempio:
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const digit of digits) {
console.log(digit);
}
Stampe:
0
1
2
3
4
5
6
7
8
9
Questo rende il per ... del ciclo della versione più concisa di tutti i cicli for.
Ma aspetta, c'è di più! Il ciclo for di loop ha anche alcuni vantaggi aggiuntivi che risolvono i punti deboli di for e for ... in loop.
È possibile interrompere o interrompere a per ... di ciclo in qualsiasi momento.
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const digit of digits) {
if (digit % 2 === 0) {
continue;
}
console.log(digit);
}
Stampe:
1
3
5
7
9
E non dovete preoccuparvi di aggiunta di nuovi oggetti da oggetti. Il ciclo for di ... eseguirà solo il loop dei valori nell'oggetto.
nel caso in cui manchi, ecco il link iniziale https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of –
Per quanto mi riguarda Go, 'for ... of' è stato introdotto nella lingua per risolvere i problemi con l'uso di' for ... in' con Arrays. 'Array.prototype' potrebbe essere modificato in modo tale che siano disponibili proprietà extra, rendendolo non sicuro per iterarle in quanto potresti ottenere chiavi non numeriche che non ti aspettavi. – Phylogenesis
Per i futuri lettori: questo probabilmente non è un duplicato di [JavaScript 'di' Keyword (per ... di loop)] (http://stackoverflow.com/questions/26525695/javascript-of-keyword-for-of-loops) , dal momento che richiede un comportamento specifico della funzione, piuttosto che chiedere una panoramica generale. – apsillers