programming functional book javascript functional-programming

javascript - functional - Comportamiento extraño para Map, parseInt



javascript programming (3)

Posible duplicado:
javascript - Array.map y parseInt

Vi este ejemplo de comportamiento extraño de JavaScript en Twitter

[''10'',''10'',''10'',''10'',''10''].map(parseInt)

evalúa a

[10, NaN, 2, 3, 4]

¿Alguien podría explicar este comportamiento? Lo verifiqué en Chrome y Firebug

[''10'',''10'',''10'',''10'',''10''].map(function(x){return parseInt(x);})

devuelve correctamente una matriz de 10 como enteros. ¿Es este un uso incorrecto de map (), un error con parseInt, o algo más?


De MDN:

la devolución de llamada se invoca con tres argumentos: el valor del elemento, el índice del elemento y el objeto Array que se está recorriendo.

parseInt() toma dos argumentos. El valor y la raíz. Eso significa que se llama a la parseInt() con parámetros no deseados.


parseInt recibe dos argumentos: cadena y raíz:

var intValue = parseInt(string[, radix]);

mientras que el segundo argumento del manejador de map es el índice:

... callback se invoca con tres argumentos: el valor del elemento, el índice del elemento y el objeto Array que se está recorriendo.


parseInt usa los dos primeros argumentos que pasa el mapa, y usa el segundo argumento para especificar la raíz.

Esto es lo que está sucediendo en tu código:

parseInt(''10'', 0) // 10 parseInt(''10'', 1) // NaN parseInt(''10'', 2) // 2 parseInt(''10'', 3) // 3 parseInt(''10'', 4) // 4

Aquí hay un enlace a MDN en el parseInt : parseInt .