我想检查输入的字符串是否是打字稿中的NAN。目前我正在做
if (isNaN(parseInt(input))) return "It's not a number."
如果我输入@@@@或####,这可以正常工作,但如果我输入" 444 @@@@",这不起作用。
答案 0 :(得分:0)
parseInt
解析最多输入字符串中的第一个非数字see MDN:
如果parseInt遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。 parseInt将数字截断为整数值。允许前导和尾随空格。
在这种情况下,parseInt("444@@@@") === 444
和444
不是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."