Apelando para o elemento inexistente da matriz, reduz muito o desempenho

Fiz uma observação - apelando para o elemento inexistente da matriz, reduz muito o desempenho. Está visivelmente em loops longos. Por que isso acontece?

Exemplo:

var filledArray = []; //This array will filled
var emptyArray = [];  //This array leave empty

//fill one array
for(var i = 0; i < 1e6; i++) {
    filledArray[i] = true;
}

//Just iterate the array and call its elements
//In filled array all elements exists, in empty array non-exists
function callItems(arr) {
    for(var i = 0; i < 1e6; i++) {
        arr[i];
    }
}

//measurement function
function bench(f, d) {
    var start = new Date;
    f(d);
    alert(new Date - start, ' ms');
}

////Result for filled array
//Firefox 24.0:             20 ms
//Chrome 30.0:              3  ms
bench(callItems, filledArray);

////Result for empty array
//Firefox 24.0:             340 ms
//Chrome 30.0:              70  ms
bench(callItems, emptyArray);

Editar:
Se você estiver executando código no Firefox, observe que isso resulta na influência do Firefox no Firebug - ativado ou desativado. Eu entendi, depois de vários testes.
Se habilitado - resulta mesmo, como escrevi acima. Mas se o Firebug não for ativado após o lançamento do Firefox, o tempo igual a 2 ms (mais rápido que o Opera e o Chrome) e a diferença entre o array vazio / preenchido desaparecerá.
Também afeta os resultados swap chamadas função bench () - primeiro com vazio, em seguida, com matriz preenchida (apenas no Firefox com o Firebug habilitado, sem o Firebug e em outros navegadores resultados inalterados).

Por que tal afeta o Firebug? - pergunta adicional.

questionAnswers(1)

yourAnswerToTheQuestion