嗨,我正在为这个简单的代码寻找一个好的解释
为什么isNaN(new Date(some date))
给false
?(typeof返回对象)
这是一个对象,据我所知isNaN函数显式转换为数字,因此如果我将不同的对象传递给isNaN,它将返回true。
要做的第一件事isNaN()
是将其参数转换为数字(如您自己所写)。如果参数是一个对象,则可以通过调用.valueOf()
该对象的方法来完成。在Date实例返回时间戳的情况下,它将不包含NaN
任何有效的Date。
尝试这个:
alert(isNaN({ valueOf: function() { return 12; } }));
对于无效的日期:
alert(isNaN(new Date("potatoes")));
会的true
。如果您想更严格isNaN
,可以使用Number.isNaN
:
alert(Number.isNaN(NaN)); // true
isNaN
Number构造函数上的版本不会将其参数强制转换为数字。要做的是说您传递的东西是否是NaN
值,而没有任何类型转换。因此,通过该功能,只有一个NaN
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句