JavaScript:如何规避NaN类型问题?
上面返回“number” Q1.我如何找到解决这一问题的方法 Q2.找到变量类型的更好方法是什么?(而不是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”。这导致了
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)