De acuerdo con MDN Math.min solo acepta números, y si uno de los argumentos no es un número, regresará NaN
. Es cierto que si se pasa un array con varios números obtenemos NaN
, así: Math.min([1,2])
pero si utilizamos una matriz con un solo número, Math.min
devolverá el número de la matriz, como en este ejemplo: Math.min([5])
. ¿Alguien tiene una idea de por qué vemos este comportamiento indocumentado?
javascript
math
alguien235
fuente
fuente
Respuestas:
Eso no es lo que dice ( énfasis en negrita mío):
Conversión de tipo:
Math.min
utilizaToNumber
para convertir sus argumentos.ToNumber
utilizaToPrimitive
para convertirObject
s (yArray
s sonObject
s).ToPrimitive
usostoString
[5].toString()
es decir'5'
, lo que se devuelveToPrimitive
, lo que lo devuelveToNumber
, lo que lo analiza5
y lo devuelveMath.min
, para lo cual es un argumento válido, porque no lo esNaN
.[1, 2].toString()
, OTOH, es'1, 2'
, que se devuelve aToPrimitive
, que se devuelve aToNumber
, que se analizaNaN
, porque no es una representación de número válida.ToNumber
luego pasaNaN
aMath.min
, que luego regresaráNaN
, porque (como MDN lo dice) "uno de sus argumentos no se puede convertir en un número" o (como lo especifica la especificación) "Si algún valor es NaN, el resultado es NaN".fuente
Number([1,2]);
resultados NaN peroNumber([1])
resultados 1.