【发布时间】:2015-07-30 14:54:48
【问题描述】:
我有一个变量 x,我想测试 x 是否设置为 NaN。我该怎么做?
我的第一直觉可能是,你知道,测试它,像这样:
if (x === NaN) { ...
傻兔子,不,那太容易了。 NaN 就像 SQL 中的 NULL,它不等于任何东西,甚至它本身。
但是看,有一个名为isNaN() 的函数——也许可以做到!
不,据我所知,isNaN() 完全没有价值。
例如,isNaN([""]) 正确返回 false,但 isNaN(["."]) 返回 true。你不想知道我是怎么知道这个缺陷的。
我该怎么做?
原来,我的问题与this one 重复,但选择的答案是错误的。 right answer 有 20% 的赞成票。
【问题讨论】:
-
"你不想知道我是怎么知道这个缺陷的。" - 我想知道你为什么要在数组上调用
isNaN? -
@Bergi -- 我正在写一个日期选择器。当
["2015", "05", "05"]被标记为 NaN 时,我差点打到屏幕。 -
但是你为什么期望一个数组表现得像一个数字呢?
-
@Bergi -- 我不是。 Angular 给我 NaN 的意思是“数据尚不可用”,而实际数据(在这种情况下是一个数组)是可用的。我需要一种方法来知道数据是否存在。
-
@Bergi -- 如果您查看the original question,您会看到问题:如果数据尚未准备好,Angular 会使用 NaN 调用 ngModel.$render,如果数据准备好则使用数据。数据在一种情况下是一个数组,但还有很多其他情况。当然,没有理由认为 NaN 本身不能成为合法值……
标签: javascript nan