首先想到的是使用 typeof 对 x 进行类型判断
typeof x === 'number' 如果为 true 则表明 x 是数值
对于99.99%的情况来说这样的判断没问题,但是,js中有一个特殊的全局对象属性 NaN ,惊讶的发现
typeof NaN === 'number' 返回的是true
所以,在判断的时候,需要将这一情况排除,使用isNaN方法来进行判断,如下:
isNaN(x) === NaN 返回 false 表示是数值
最终表达式为:
typeof x === 'number' && !(isNaN(x) === NaN)
返回结果为 true 则表示 x 为数值类型