Этот звонок
[0].map(Array);
дает такой же результат, как если бы вы написали что-то вроде этого:
[0].map(function (value, index, array) {
return Array(value, index, array);
})
Функция карты вызывает функцию массива с тремя параметрами: значением элемента, индексом элемента и целым массивом. Этот вызов Arrayвозвращает вам массив с 3 элементами: значение (число 0), индекс (число 0), весь массив ( [0]).
И этот новый массив обернут в исходный массив, потому что вы сопоставили исходный элемент (номер 0) с новым элементом (массив из 3 элементов)
Примечание: вы могли использовать только первый параметр, как в
array.map(function (a) { return a * a; });
или используя всего два, чтобы получить также индекс
array.map(function (item, index) { return "index=" + index + ", value=" + item; });
Но вы должны помнить, что по- mapпрежнему предоставляет 3 параметра, которые вы просто игнорируете в своей функции обратного вызова. Это также причина того, почему код вроде:
[0].map(String);
возвращается
["0"]
Это потому, что функция String заботится только о первом параметре и игнорирует другие переданные параметры. Если вы позвоните
String(11, "Some", "other", "ignored", "parameters")
ты все равно получишь
"11"