The .map()
function is calling the Array()
function with three arguments, the value of the array element which is 0
, the index of that element, also 0
, and a reference to the whole array.
So it's like doing this:
var a = [0];
var index = 0
Array(a[index], index, a); // create array with three elements
The array returned by Array()
then becomes the first element of the array that .map()
creates, hence the extra level of nesting in your [[0, 0, [0]]]
result.
EDIT regarding your edit: when you say [0].map(String);
that results in String()
being called with the same three arguments like String(a[index], index, a)
, but the String()
function ignores all but the first argument, whereas Array()
uses all supplied arguments.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…