De acordo com o MDN, o Math.min aceita apenas números e, se um dos argumentos não for um número, ele retornará NaN
. É verdade que, se passar um array com vários números obtemos NaN
, como este: Math.min([1,2])
, mas se usar uma matriz com apenas um número, Math.min
irá retornar o número na matriz, como neste exemplo: Math.min([5])
. Alguém tem uma idéia de por que vemos esse comportamento não documentado?
javascript
math
someone235
fonte
fonte
Respostas:
Isso não é o que diz ( negrito grifo meu):
Conversão de tipo:
Math.min
usaToNumber
para converter seus argumentos.ToNumber
usaToPrimitive
para converterObject
s (eArray
s sãoObject
s).ToPrimitive
usatoString
[5].toString()
é'5'
, que é retornadoToPrimitive
, o que retornaToNumber
, o que analisa5
e retornaMath.min
, para o qual é um argumento válido, porque não éNaN
.[1, 2].toString()
, OTOH, is'1, 2'
, que é retornado paraToPrimitive
, que retorna paraToNumber
, que analisa paraNaN
, porque não é uma representação numérica válida.ToNumber
passaNaN
paraMath.min
, que retornaráNaN
, porque (como a MDN declara) "um de seus argumentos não pode ser convertido em um número" ou (como a especificação especifica) "se algum valor for NaN, o resultado será NaN.".fonte
Number([1,2]);
resultados NaN, mas osNumber([1])
resultados 1.