我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是number类型。
代码如下:
这个函数对于整数和浮点数都没有问题,但对于NaN值也返回true这让人感到不爽,毕竟用isNumber判断通过后谁也不会用NaN去做算术运算。
那改进一下,用Object.prototype.toString试试。
代码如下:
和typeof判断一样,对于NaN也返回true,代码量还大了,这不是想要的结果。toString.call方式判断数组(Array)可行,数字则力不从心了。
再改进下,NaN值用isNaN函数来对付。
代码如下:
这次,如果传入的是非数字(NaN或者可转成NaN的值)就返回false了
代码如下:
嗯,这个isNumber不错了,但还有一个等价的,用isFinite来判断
代码如下: