Answers:
根据MDN
Math.min
,它仅接受数字,并且如果参数之一不是数字,则将返回NaN
。
那不是它所说的(我的粗体强调):
如果至少一个参数不能转换为数字,则结果为
NaN
。
类型转换:
Math.min
用于ToNumber
转换其参数。ToNumber
用于ToPrimitive
转换Object
s(和Array
s为Object
s)。ToPrimitive
用途 toString
[5].toString()
is '5'
,它被返回到ToPrimitive
,然后将其返回到,然后将ToNumber
其解析为,5
然后返回给Math.min
,因为它不是有效参数,因此它是有效参数NaN
。[1, 2].toString()
,OTOH,是'1, 2'
,将返回ToPrimitive
,将其返回到,然后将ToNumber
其解析为NaN
,因为它不是有效的数字表示形式。ToNumber
然后传递NaN
到Math.min
,然后返回NaN
,因为(如MDN所言)“其参数之一不能转换为数字”或(如规范所言)“如果值为NaN,则结果为NaN”。Number([1,2]);
结果为NaN,但Number([1])
结果1