Existem duas maneiras de atravessar as matrizes em JS
A cópia do código é a seguinte:
var Array = ['a']
// padrão para loop
for (var i = 1; i <Array.length; i ++) {
Alerta (Array [i])
}
// loop foreach
para (var i na matriz) {
Alerta (Array [i])
}
Em circunstâncias normais, as duas maneiras acima de atravessar a matriz são as mesmas. Primeiro de tudo, vamos falar sobre a primeira diferença entre os dois
O I no padrão para loop é do tipo de número, que representa o subscrito da matriz, mas o i no loop foreach representa a chave da matriz é do tipo de string, porque tudo no JS é um objeto. Tente alerta (tipo de i); Essa diferença é um pequeno problema. Agora eu adiciono o seguinte código e os resultados da execução acima serão diferentes.
A cópia do código é a seguinte:
// Matriz nativa JS estendida
Array.prototype.test = function ()
}
Tente ver o que o código acima é executado. Descobrimos que o padrão para o loop ainda é real em loop nas matrizes, mas neste momento o loop foreach é impresso do método de teste que acabei de escrever. Essa é a maior diferença entre e foreach atravessar matrizes. Se usarmos foreach para atravessar as matrizes no projeto, suponha que haja um dia em que alguém expanda acidentalmente a classe de matriz nativa de JS ou apresente uma estrutura JS externa para estender a matriz nativa. Então a pergunta surge.
Mais dois pontos para sugerir
1. Não use para entrar para atravessar a matriz e use padrão para matrizes variáveis de loop na unificação (não podemos garantir se o JS que introduzimos usará o protótipo para estender a matriz nativa)
2. Se você deseja estender a classe nativa de JS, não use o protótipo