Почему console.log печатает массив, даже если массив обновляется после операторов консоли? - PullRequest
0 голосов
/ 26 июня 2018

Я запустил следующий код JS.Консоль печатает пустой массив.

function xyz(){
var a=[]; var b=[];
console.log(a);
for(i=0;i<10;i++){
b.push(i);
}
a=b;
}
но когда я пытаюсь запустить это

function xyz(){
var a=[];
console.log(a);
for(i=0;i<10;i++){
a.push(i);
}
}

консоль печатает массив от 0 до 9. Кроме того, я вижу здесь, что хотя оператор консоли находится над циклом for, где мы помещаем значения в массив, но консоль все еще печатает, но не в первом случае (что, я думаю, связано с тем, что ссылка, на которой печатается консоль, пуста). Код был протестирован на консоли браузера Chrome.

1 Ответ

0 голосов
/ 26 июня 2018
function xyz(){
   var a=[];
   console.log(a);
   for(var i=0;i<10;i++){
     a.push(i);
   }
}
xyz();

Когда мы видим его в консоли Chrome, у него есть пустой массив, но когда мы его расширяем, он также показывает значения массива со свойством length.

Вам нужно обратить пристальное внимание, там есть i (информация), которая говорит, что она оценивается только сейчас.

enter image description here

Это означает, что консоль chrome получает реальную ссылку на массив и показывает пустой массив со свойством length, равным 0, на console.log(), но также добавляет реальную ссылку на этот массив, поэтому при расширении мы видим массив

Вам нужно использовать console.log() после обновления массива в вашем коде для правильной работы.

  function xyz(){
      var a=[];
       
      for(i=0;i<10;i++){
         a.push(i); //array is updating here
      }
     console.log(a);
    }
    xyz();

 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...