Firebug представляет (new Array(N))
как массив с N
undefined
в нем. Недавно я столкнулся с сценарием, который показал, что размерный массив со всеми значениями undefined
в нем отличается от нового сконструированного массива размера. Я хотел бы понять разницу.
Предположим, вы хотите сгенерировать список случайных чисел от 0 до 1000.
function kilorange() {
return Math.floor(Math.random() * (1001));
}
no_random_numbers = (new Array(6)).map(kilorange);
my_random_numbers = [undefined, undefined, undefined,
undefined, undefined, undefined].map(kilorange);
Я бы ожидал, что no_random_numbers
и my_random_numbers
будут эквивалентными, но это не так. no_random_numbers
- это еще один массив из undefined
s, тогда как my_random_numbers
- массив с шестью случайными целыми числами. Кроме того, после того, как вы сбросили инструкцию console.count
в kilorange
, я узнал, что моя функция никогда не вызывается для массива, созданного с помощью конструктора Array.
В чем разница и почему map
(и, предположительно, другие итерационные методы) не обрабатывают вышеуказанные массивы одинаково?