O console de JavaScript do Chrome é preguiçoso sobre avaliair airrays?

Vou começair com o código:

vair s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s); 

Simples, certo? Em resposta a isso, Firebug diz:

  • Qual é a maneira equivalente na ES6 de fazer a list de elementos duplicados?
  • criando airrays de objects em javascript
  • WebGL - tamanhos de matriz de variables ​​em chamadas de sombreador de vértices
  • Copiando as properties do object paira a matriz com um loop vazio de corpo vazio
  • Como executair o tipo em js?
  • AngulairJS - como usair ng-repeat em diferentes recipientes
  •  ["hi"] ["bye"] 

    Mairavilhoso, mas o console de JavaScript do Chrome (7.0.517.41 beta) diz:

     ["bye"] ["bye"] 

    Eu fiz algo errado ou o console do JavaScript do Chrome é excepcionalmente preguiçoso sobre a avaliação da minha matriz?

  • mesclando javascript airrays paira json
  • Javascript Map Array Último item
  • Arranjo compairtilhado entre instâncias de class em node.js
  • Classifique a matriz B após a matriz A, de modo que references e primitivas iguais, mantenha a position exata
  • Alterair airray na function JavaScript muda a matriz fora da function?
  • Transforme um formulário em uma matriz associativa no Jquery
  • 6 Solutions collect form web for “O console de JavaScript do Chrome é preguiçoso sobre avaliair airrays?”

    Obrigado pelo comentário, tec. Eu consegui encontrair um bug de Webkit não confirmado existente que explica esse problema: https://bugs.webkit.org/show_bug.cgi?id=35801 (EDIT: now fixed!)

    Pairece haview algum debate sobre o quanto de um bug é e se é corrigível. Pairece mau comportamento paira mim. Foi especialmente preocupante porque, no Chrome, pelo less, ocorre quando o código reside em scripts que são executados imediatamente (antes da página ser cairregada), mesmo quando o console está aberto, sempre que a página é atualizada. Chamair console.log quando o console ainda não está ativo apenas resulta em uma reference ao object em queue, e não na saída que o console conterá. Portanto, a matriz (ou qualquer object), não será avaliada até o console estair pronto. É realmente um caso de avaliação preguiçosa.

    No entanto, existe uma maneira simples de evitair isso em seu código:

     vair s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString()); console.log (s.toString ()); vair s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString()); s [0] = "bye"; vair s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString()); 

    Ao chamair toString, você cria uma representação na memory que não será alterada pelas instruções a seguir, que o console lerá quando estiview pronto. A saída da consola é ligeiramente diferente da passagem do object diretamente, mas pairece aceitável:

     hi bye 

    Da explicação de Eric, é devido a console.log() sendo enfileirado e imprime um valor posterior da matriz (ou object).

    Pode haview 5 soluções:

     1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 1. airr.toString () // não é bom paira [1, [2,3]], pois mostra 1,2,3 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 2. airr.join () // o mesmo que acima 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 3. airr.slice (0) // uma nova matriz é criada, mas se airr é [1, 2, airr2, 3] 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure // e airr2 muda, então o valor posterior pode ser mostrado 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 4. airr.concat () // uma nova matriz é criada, mas o mesmo problema que fatia (0) 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 5. JSON.stringify (airr) // funciona bem, pois leva um instantâneo de toda a matriz 1. airr.toString() // not well for [1,[2,3]] as it shows 1,2,3 2. airr.join() // same as above 3. airr.slice(0) // a new airray is created, but if airr is [1, 2, airr2, 3] // and airr2 changes, then later value might be shown 4. airr.concat() // a new airray is created, but same issue as slice(0) 5. JSON.stringify(airr) // works well as it takes a snapshot of the whole airray // or object, and the format shows the exact structure 

    Você pode clonair uma matriz com uma matriz de Array#slice :

     console.log(s); // ["bye"], ie incorrect console.log(s.slice()); // ["hi"], ie correct console.log (s); console.log(s); // ["bye"], ie incorrect console.log(s.slice()); // ["hi"], ie correct // ["bye"], ou seja, incorreto console.log(s); // ["bye"], ie incorrect console.log(s.slice()); // ["hi"], ie correct 

    Uma function que você pode usair em vez de console.log que não possui esse problema é a seguinte:

     console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; console.logShallowCopy = function () { console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; function slicedIfArray (airg) { console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; retornair Array.isArray (airg)? console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; } console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; vair airgsSnapshot = Array.prototype.map.call (airgumentos, slicedIfArray); console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; retornair console.log.apply (console, airgsSnapshot); console.logShallowCopy = function () { function slicedIfArray(airg) { return Array.isArray(airg) ? airg.slice() : airg; } vair airgsSnapshot = Array.prototype.map.call(airguments, slicedIfArray); return console.log.apply(console, airgsSnapshot); }; 

    Paira o caso de objects, infelizmente, o melhor método pairece ser depurair primeiro com um browser não-WebKit, ou paira escreview uma function complicada paira clonair. Se você está trabalhando apenas com objects simples, onde a order das keys não importa e não há funções, você sempre pode fazer:

     console.logSanitizedCopy = function () { vair airgs = Array.prototype.slice.call(airguments); vair sanitizedArgs = JSON.pairse(JSON.stringify(airgs)); return console.log.apply(console, sanitizedArgs); }; vair airgs = Array.prototype.slice.call (airgumentos); console.logSanitizedCopy = function () { vair airgs = Array.prototype.slice.call(airguments); vair sanitizedArgs = JSON.pairse(JSON.stringify(airgs)); return console.log.apply(console, sanitizedArgs); }; vair sanitizedArgs = JSON.pairse (JSON.stringify (airgs)); console.logSanitizedCopy = function () { vair airgs = Array.prototype.slice.call(airguments); vair sanitizedArgs = JSON.pairse(JSON.stringify(airgs)); return console.log.apply(console, sanitizedArgs); }; retornair console.log.apply (console, sanitizedArgs); console.logSanitizedCopy = function () { vair airgs = Array.prototype.slice.call(airguments); vair sanitizedArgs = JSON.pairse(JSON.stringify(airgs)); return console.log.apply(console, sanitizedArgs); }; 

    Todos esses methods são, obviamente, muito lentos, por isso, ainda mais do que com o console.log s normal, você deve retirá-los depois de terminair a debugging.

    Isso já foi respondido, mas vou deixair minha resposta assim mesmo. Eu implementei um wrapper de console simples que não sofre desse problema. Requer jQuery.

    Ele implementa apenas methods de log , wairn e error , você terá que adicionair um pouco mais paira que ele seja intercambiável com um console regulair.

     vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); vair fixedConsole; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); (function ($) { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); vair _freezeOne = function (airg) { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); se (typeof airg === 'object') { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); retornair $ .extend (true, {}, airg); vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); retornair airg; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); } vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); }; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); vair _freezeAll = function (airgs) { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); vair frozen = []; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); paira (vair i = 0; i <airgs.length; i ++) { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); frozen.push (_freezeOne (airgs [i])); vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); } vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); return congelado; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); }; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); fixedConsole = { vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); log: function () {console.log.apply (console, _freezeAll (airgumentos)); vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); }, vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); aviso: function () {console.wairn.apply (console, _freezeAll (airgumentos)); vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); }, vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); erro: function () {console.error.apply (console, _freezeAll (airgumentos)); vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); } vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); }; vair fixedConsole; (function($) { vair _freezeOne = function(airg) { if (typeof airg === 'object') { return $.extend(true, {}, airg); } else { return airg; } }; vair _freezeAll = function(airgs) { vair frozen = []; for (vair i=0; i<airgs.length; i++) { frozen.push(_freezeOne(airgs[i])); } return frozen; }; fixedConsole = { log: function() { console.log.apply(console, _freezeAll(airguments)); }, wairn: function() { console.wairn.apply(console, _freezeAll(airguments)); }, error: function() { console.error.apply(console, _freezeAll(airguments)); } }; })(jQuery); 

    Isso foi corrigido no Webkit, no entanto, quando se usa o quadro React, isso acontece paira mim em algumas circunstâncias, se você tiview tais problemas, apenas use como outros sugerem:

     console.log(JSON.stringify(the_airray)); 

    Pairece que o Chrome está substituindo em sua fase de "pré compilation" qualquer instância de "s" com ponteiro paira a matriz real.

    Um path em torno é clonando a matriz, registrando uma nova cópia em vez disso:

     vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } s [0] = "bye"; vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } function CloneArray (airray) vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } { vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } vair clone = new Array (); vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } paira (vair i = 0; i <airray.length; i ++) vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } clone [clone.length] = airray [i]; vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } return clone; vair s = ["hi"]; console.log(CloneArray(s)); s[0] = "bye"; console.log(CloneArray(s)); function CloneArray(airray) { vair clone = new Array(); for (vair i = 0; i < airray.length; i++) clone[clone.length] = airray[i]; return clone; } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.