Inconsistência do Google Chrome console.log () com objetos e matrizes

Eu estava ajudando um colega a depurar algum código hoje e notei um comportamento estranho comconsole.log() no Google Chrome:

Parece que se você:

Crie uma matriz aninhada (por exemplo, [[345, "test"]])

Registre a matriz no console comconsole.log().

Modifique um dos valores da matriz interna e, em seguida,console.log() produzirá o valor posterior -não os valores da matriz no momento em queconsole.log() foi executado.

Javascript:

var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}


var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]

Exemplo JSFiddle

Esse comportamento não acontece no Firefox.

Observe também que, se eu percorresse seu código linha por linha no depurador do Chrome, entãoconsole.log() produziria os valores corretos.

Existe uma explicação para esse fenômeno estranho ou é apenas um bug no Google Chrome?

EDITAR:

Eu reduzi as etapas para reproduzir o inconsistenteconsole.log() comportamento:

Se você adicionar este script à sua página:

var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);

e abra-o em uma nova janela com o Chromejanela do console já aberta, então oconsole.log() a saída será diferente do que se você carregasse a página com ojanela do console fechada. Aqui está um JSFiddle que demonstra que.

No primeiro caso, com a janela do console já aberta,console.log() produzirá o valor atual da matriz (ou seja, dois itens).

No segundo caso, com a janela do console inicialmente fechada e aberta apenasdepois de a página carrega,console.log() produzirá os valores posteriores da matriz (ou seja, três itens).

Isso é um bug no Google Chrome?console.log() funcionalidade?

questionAnswers(2)

yourAnswerToTheQuestion