(Number(value)!== NaN)始终为真

时间:2018-09-23 05:59:16

标签: javascript typescript types numbers

我是第一次使用打字稿,但我遇到了一个非常奇怪的问题。

我正在尝试像计算器一样进行计算,因此,当用户按下按钮时,它可能是数字,2 3 4 ...或操作* \ + ...

按下按钮时,我调用一个函数,然后该函数检查它是否是数字或一个操作,以调用适当的函数。

我比较这样的字符串:

if (Number(value) !== NaN) {
  // it is a number
} else {
  // it is an operation
}

尽管这在控制台中是有效的(也就是说我在按下数字时确实有一个数字(3,4,5)而在按下一个操作时确实有一个NaN),但这一行总是返回true,所以我总是认为一个数字。

我在这里做什么错了?

谢谢

2 个答案:

答案 0 :(得分:3)

要检查值是否为NaN,应使用isNaN函数。

if(isNaN(value)) {
  //do this if NaN
} else {
  //do this if not
}

顺便说一句:在 SO 上有很多类似的问题;)例如:How do you test for NaN in JavaScript?

答案 1 :(得分:0)

使用isNaN(value)。如果value是数字,则返回true,否则返回False。