JavaScript:如何规避NaN类型问题?

JavaScript:如何规避NaN类型问题?,javascript,typeof,Javascript,Typeof,上面返回“number” Q1.我如何找到解决这一问题的方法 Q2.找到变量类型的更好方法是什么?(而不是typeof) 谢谢 更新: 谢谢你的评论。但是第一个回答者理解了我的问题。我关心的是评估“NaN”返回语句的类型,使其不显示为“数字” 我在if语句中使用typeof()来执行if(typeof(x)=“number”){do this..} 但即使x是NaN,条件还是通过了。我想解决这个问题 我不知道“NaN”是“Number”类型,因为NaN的意思是“nota Number”。这导致了

上面返回“number”

Q1.我如何找到解决这一问题的方法

Q2.找到变量类型的更好方法是什么?(而不是
typeof

谢谢

更新: 谢谢你的评论。但是第一个回答者理解了我的问题。我关心的是评估“NaN”返回语句的类型,使其不显示为“数字”

我在if语句中使用typeof()来执行if(typeof(x)=“number”){do this..}

但即使x是NaN,条件还是通过了。我想解决这个问题

我不知道“NaN”是“Number”类型,因为NaN的意思是“nota Number”。这导致了混乱

我很抱歉没有弄清楚我想问什么。但我的问题解决了


谢谢大家

除非需要速度,否则不要使用typeof。它对数组和null都失败。然而,根据规范,NaN实际上是类型编号

使用


如果要检查某个数字是否为NaN,则可能需要使用函数:

var getType = function (obj) {
    return Object.prototype.toString.call(obj).slice(8, -1);
};
要检查变量是否包含数字且不为NaN,可以使用以下命令:

var val = 4

console.log(isNaN(val)) // false

var val2 = NaN

console.log(isNaN(val2)) // true

问题1。怎么了?返回规范所述内容的类型?2.使用typeof有什么问题?
NaN
是数字类型。你想做什么?相关:@Sunny-根据规范,NaN属于类型编号。但是上述方法对于null和数组都将失败。参见下面我的答案。为什么
typeof NaN
不是“number”?参考错误:Pub没有定义。还有:什么?似乎只返回首字母大写的typeof。包括Nan-->“号码”,这似乎是OP的投诉。我敢肯定,它在内部称为typeof。这根本不是“更好”,这是图书馆的。我已经编辑了它,供您单独使用。感谢您理解我的问题。这就解决了!非常感谢。但是请注意,
isNaN(未定义)
true
。这也有帮助。非常感谢。
var val = 4

console.log(isNaN(val)) // false

var val2 = NaN

console.log(isNaN(val2)) // true
typeof val === 'number' && !isNAN(val)