Aunque las matrices son objetos en JavaScript, no se recomienda usar un bucle para atravesar una matriz. De hecho, hay muchas razones para evitar que usemos un bucle para matrices.
Porque el bucle para en el bucle enumerará todas las propiedades en la cadena prototipo, y la única forma de evitar que sea usar aSownproperty para juzgar, que será mucho más lento que el normal para el bucle.
Traversal
Para un rendimiento óptimo atravesar una matriz, la mejor manera es usar el clásico para bucle.
La copia del código es la siguiente:
Var List = [1, 2, 3, 4, 5, ...... 100000000];
para (var i = 0, l = list.length; i <l; i ++) {
console.log (lista [i]);
}
Aquí hay un truco adicional, que es para almacenar en caché la longitud de la matriz por l = list.length.
Aunque la longitud de la propiedad se define en la matriz en sí, todavía hay sobrecarga en cada transversal del bucle. Aunque los últimos motores JavaScript pueden haber realizado optimizaciones de rendimiento para esta situación, no puede garantizar que su código JavaScript siempre se ejecute en este navegador.
De hecho, los bucles sin longitudes de caché son mucho más lentos que los bucles con longitudes de caché.
atributo de longitud
Aunque el atributo de longitud solo devuelve el número de elementos en la matriz a través del método Getter, la matriz puede ser truncada por el método Setter.
La copia del código es la siguiente:
var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push (4);
foo; // [1, 2, 3, indefinido, indefinido, indefinido, 4]
Asignar un número más pequeño al atributo de longitud truncará la matriz, y si se le asignará un número mayor, no truncará la matriz.
Resumir
Para un rendimiento óptimo, se recomienda usar un bucle for en lugar de un bucle para en bucle mientras almacena en caché el atributo de longitud.
También hay objetos de matriz que no tienen método, solo una longitud de atributo única. Los objetos de cadena tienen métodos de longitud ~~