Ого! Во-первых, не назначайте окно! (неожиданные вещи почти наверняка произойдут).
Кроме того, объекты JavaScript (да, массив является объектом, typeof [] === "object" // true
) передаются по ссылке, а не по значению.
Когда вы добавляете к theArray
, создается новая ссылка. Когда вы заходите в консоль, он сначала показывает пустой массив , но на самом деле он записал ссылку на theArray
, поэтому при просмотре содержимого он показывает массив. заполнены значениями;
Даже попробуйте приведенный ниже пример, происходит то же самое (хотя гораздо проще следовать)
var arr = [];
for (var idx = 0; idx < 3; idx++) {
console.log(arr);
arr[idx] = idx;
}
, чтобы предотвратить это, вам нужно скопировать массив, например так:
var newArray = Object.assign([], theArray);
Object.assign
копирует значения массива (или объекта), возвращая новый массив (снова или объект), но не создает ссылку обратно на исходный массив или объект.