Hay dos formas de atravesar las matrices en JS
La copia del código es la siguiente:
varilla var = ['a']
// Estándar para bucle
para (var i = 1; i <array.length; i ++) {
alerta (matriz [i])
}
// bucle foreach
para (var i en matriz) {
alerta (matriz [i])
}
En circunstancias normales, las dos formas anteriores de atravesar la matriz son las mismas. En primer lugar, hablemos de la primera diferencia entre los dos
El i en el estándar para el bucle es de tipo de número, que representa el subíndice de la matriz, pero la i en el bucle foreach representa la clave de la matriz es de tipo de cadena, porque todo en JS es un objeto. Pruebe alerta (typeOf I); Esta diferencia es un pequeño problema. Ahora agrego el siguiente código, y los resultados de ejecución anteriores serán diferentes.
La copia del código es la siguiente:
// matriz nativa JS extendida
Array.prototype.test = function ()
}
Intente ver qué ejecuta el código anterior. Descubrimos que el estándar para el bucle sigue siendo real en las matrices, pero en este momento el bucle foreach se imprime fuera del método de prueba que acabo de escribir. Esta es la mayor diferencia entre las matrices For y Foreach que atraviesa. Si usamos foreach para atravesar matrices en el proyecto, supongamos que hay un día en que alguien expande accidentalmente la clase de matriz nativa de JS, o presenta un marco JS externo para extender la matriz nativa. Entonces surge la pregunta.
Dos puntos más para sugerir
1. No use para atravesar la matriz y use estándar para matrices de variables de bucle en la unificación (no podemos garantizar si el JS que presentamos utilizará un prototipo para extender la matriz nativa)
2. Si desea extender la clase nativa de JS, no use prototipo