Меня путают результаты map
ping над массивом, созданным с помощью new
:
function returnsFourteen() {
return 14;
}
var a = new Array(4);
> [undefined x 4] in Chrome, [, , , ,] in Firefox
a.map(returnsFourteen);
> [undefined x 4] in Chrome, [, , , ,] in Firefox
var b = [undefined, undefined, undefined, undefined];
> [undefined, undefined, undefined, undefined]
b.map(returnsFourteen);
> [14, 14, 14, 14]
Я ожидал, что a.map(returnsFourteen)
вернет [14, 14, 14, 14]
(то же самое, что и b.map(returnsFourteen)
, потому что согласно странице MDN на массивах:
Если единственный аргумент, переданный конструктору Array, является целым числом между 0 и 2 ** 32-1 (включительно), создается новый массив JavaScript с таким количеством элементов.
Я интерпретирую это как означающее, что a
должен иметь 4 элемента.
Что мне здесь не хватает?