Firebug представляет (new Array(N))
как массив с N
undefined
s в нем. Недавно я столкнулся со сценарием, который продемонстрировал, что размерный массив со всеми значениями 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
с, тогда как my_random_numbers
- это массив с шестью случайными целыми числами в нем. Кроме того, после добавления оператора console.count
в kilorange
я узнал, что моя функция никогда не вызывается для массива, созданного с помощью конструктора Array.
В чем разница, и почему map
(и, вероятно, другие итерируемые методы) не обрабатывают вышеупомянутые массивы одинаково?