Ho trovato la seguente annotazione del ciclo in un grande progetto su cui sto lavorando (pseudocodice):
var someOtherArray = [];
for (var i = 0, n = array.length; i < n; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
Ciò che ha attirato la mia attenzione è questa variabile extra "n". Non ho mai visto un lop scritto in questo modo prima.
Ovviamente in questo scenario non c'è motivo per cui questo codice non possa essere scritto nel modo seguente (che sono molto abituato a):
var someOtherArray = [];
for (var i = 0; i < array.length; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
Ma mi ha fatto pensare.
C'è uno scenario nel momento in cui scrivere un ciclo for potrebbe avere un senso? L'idea mi viene in mente che la lunghezza della "matrice" può cambiare durante l'esecuzione del ciclo for, ma non vogliamo eseguire un ciclo superiore alla dimensione originale, ma non riesco a immaginare un simile scenario.
Ridurre l'array all'interno del loop non ha molto senso, perché è probabile che otteniamo OutOfBoundsException.
Esiste uno schema di progettazione noto in cui questa annotazione è utile?
Modifica Come notato da @ Jerry101, la ragione è la performance. Ecco un link al test delle prestazioni che ho creato: link . A mio parere, la differenza non è abbastanza grande a meno che non si stia procedendo con iterazione attraverso un array molto vasto. Il codice da me copiato ha solo fino a 20 elementi, quindi penso che la leggibilità in questo caso superi la considerazione prestazionale.