Selon MDN Math.min n'accepte que des nombres, et si l'un des arguments n'est pas un nombre, il reviendra NaN
. Il est vrai que si l' on passe un tableau avec plusieurs chiffres que nous obtenons NaN
, comme ceci: Math.min([1,2])
, mais si nous utilisons un tableau avec un seul numéro, Math.min
renverra le nombre dans le tableau, comme dans cet exemple: Math.min([5])
. Quelqu'un at-il une idée pourquoi nous voyons ce comportement sans papiers?
javascript
math
quelqu'un235
la source
la source
Réponses:
Ce n'est pas ce qu'il dit ( gras souligné):
Conversion de type:
Math.min
utiliseToNumber
pour convertir ses arguments.ToNumber
utiliseToPrimitive
pour convertirObject
s (etArray
s sontObject
s).ToPrimitive
les usagestoString
[5].toString()
is'5'
, qui est renvoyé versToPrimitive
, qui le renvoieToNumber
, qui le analyse5
et le renvoieMath.min
, pour lequel il s'agit d'un argument valide, car il ne l'est pasNaN
.[1, 2].toString()
, OTOH, is'1, 2'
, qui est retourné àToPrimitive
, qui le renvoie àToNumber
, qui l'analyseNaN
, car il ne s'agit pas d'une représentation numérique valide.ToNumber
passe ensuiteNaN
àMath.min
, qui reviendra ensuiteNaN
, car (comme le dit MDN) "l'un de ses arguments ne peut pas être converti en nombre" ou (comme le spécifie le spécificateur) "Si une valeur est NaN, le résultat est NaN.".la source
Number([1,2]);
résultats NaN mais lesNumber([1])
résultats 1.