La funzione di callback in Array.mapha tre parametri:
Dalla stessa pagina Mozilla a cui hai collegato:
il callback viene invocato con tre argomenti: il valore dell'elemento, l'indice dell'elemento e l'oggetto Array attraversati. "
Quindi, se chiamate una funzione parseIntche prevede effettivamente due argomenti, il secondo argomento sarà l'indice dell'elemento.
In questo caso, hai finito per chiamare parseIntcon radix 0, 1 e 2 a turno. Il primo è lo stesso di non fornire il parametro, quindi è predefinito in base all'input (base 10, in questo caso). La base 1 è una base numerica impossibile e 3 non è un numero valido nella base 2:
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
Quindi, in questo caso, è necessaria la funzione wrapper:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
o con sintassi ES2015 +:
['1','2','3'].map(num => parseInt(num, 10));
(In entrambi i casi, è meglio fornire esplicitamente una radice parseIntcome mostrato, perché altrimenti indovina la radice in base all'input. In alcuni browser più vecchi, uno 0 iniziale lo induceva a indovinare ottale, che tendeva a essere problematico. indovina esadecimale se la stringa inizia con 0x.)
.map(parseFloat)perché richiede solo un parametro.