gpt4 book ai didi

javascript - 为什么 isNaN(123.) 返回 false?

转载 作者:数据小太阳 更新时间:2023-10-29 04:25:58 24 4
gpt4 key购买 nike

为什么 Javascript 函数调用 isNaN(123.) 返回 false? (注意 123 之后的点 (.))。这是一个普遍可接受的数字还是会导致下游错误?

我正在使用 isNaN 和拆分来验证一个值是否是有效的小数。 isNaN 是否存在跨浏览器问题?我应该使用定制的实现吗?

谢谢。

最佳答案

在 JavaScript 中 Numeric Literal 的语法是这样表达的:

DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 

如您所见,点之后的 DecimalDigits 部分是可选的(opt 后缀)。

var n = 123.;
typeof n; // "number"

我不推荐使用 isNaN 函数来检测数字,因为类型强制转换 会让一些事情看起来奇怪:

isNaN(""); // false, a empty string coerces to zero
isNaN("\n\t"); // false, a white-space string coerces to zero
isNaN(true); // false, boolean true coerces to 1
isNaN(false); // false, boolean false coerces to zero
isNaN(new Date); // false, Date objects coerce to its numeric timestamp
// etc...

isNaN 应该仅用于与 NaN 进行比较,因为:

NaN == NaN; // false!
IsNaN(NaN); // true

如果您想检测Number 对象、Number 值或“可解析的”数字字符串,请查看this function。我已经发布了一段时间。

关于javascript - 为什么 isNaN(123.) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com