在打字稿中检查NAN

时间:2017-05-04 22:47:26

标签: javascript

我想检查输入的字符串是否是打字稿中的NAN。目前我正在做

if (isNaN(parseInt(input))) return "It's not a number."

如果我输入@@@@或####,这可以正常工作,但如果我输入" 444 @@@@",这不起作用。

1 个答案:

答案 0 :(得分:0)

parseInt解析最多输入字符串中的第一个非数字see MDN

  

如果parseInt遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。 parseInt将数字截断为整数值。允许前导和尾随空格。

在这种情况下,parseInt("444@@@@") === 444444不是NaN

如果您想检查整个字符串是否代表有效号码,use Number instead

if (isNaN(Number(input))) return "It's not a number."

或者,使用一元加运算符强制将类型转换为number(相当于调用Number):

if (isNaN(+input)) return "It's not a number."

编辑:实际上,isNaN无论如何都会进行类型转换,所以您也可以直接调用它:

if (isNaN(input)) return "It's not a number."