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
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 .