Sie können herausfinden, indem ein Trockenlauf des Codes auszuführen:
var hello = Array.apply(null, Array(5))
An dieser Stelle:
hello == [undefined,undefined,undefined,undefined,undefined]
Jetzt:
hello.map(function (x, i) { return i; });
ist das Äquivalent zu (Verwendung die Kommentare, um zu sehen, wie der folgende Bezug auf die obige Funktion:
for(var i = 0; i < hello.length; i++){ // i is the index
x = hello[i]; // x is the value at each index
// Function body below using `hello[i] = ` instead of return
hello[i] = i;
}
Daher ist das Ergebnis von jedem Element in der Liste Einstellung auf den Index dieses Elements:
[0, 1, 2, 3, 4]
Es ist Schlüssel des Arrays der Länge 5. Was Sie verwirrt macht? –
'Array.apply (null, Array (5))' gibt ein Array mit der Größe'undefiniert' zurück. Was auch immer dort ist, diese "map" -Funktion ignoriert Werte und konvertiert sie in Array [0, 1, 2, 3, 4], weil das zweite Argument von 'map' Index ist. –
Siehe auch https://stackoverflow.com/questions/22949976/why-does-array-applynull-args-act-inconsistently-when-deling-with-sparse-a –