В соответствии с документация MDN для new Array(length)
Я могу инициализировать массив с заданной длиной как таковой:
var a = new Array(10);
a.length; // => 10
a; // => [undefined x 10]
Однако, по-видимому, я не могу использовать такие методы, как map(...)
для нового массива, хотя массивы, построенные другими способами, работают нормально:
a.map(function() { return Math.random(); });
// => [undefined x 10] -- wtf?
[undefined, undefined].map(function() { return Math.random(); });
// => [0.07192076672799885, 0.8052175589837134]
Почему это так?
Я понимаю из этого опыта (и поиска в Интернете), что конструктор массива с длиной является черной дырой необъяснимого поведения, но спецификация ECMA 262 дает объяснение?