在Typescript中,这将显示一个错误,指出isNaN只接受数值
isNaN('9BX46B6A')
这将返回false,因为parseFloat('9BX46B6A')
的计算结果为9
isNaN(parseFloat('9BX46B6A'))
我仍然可以在Visual Studio中显示错误,但我希望以正确的方式运行。
目前,我已经编写了这个修改后的函数-
static isNaNModified = (inputStr: string) => {
var numericRepr = parseFloat(inputStr);
return isNaN(numericRepr) || numericRepr.toString().length != inputStr.length;
}
发布于 2014-05-03 14:09:04
将字符串转换为数字的方法是使用Number
,而不是parseFloat
。
Number('1234') // 1234
Number('9BX9') // NaN
如果您喜欢速记,也可以使用一元加号运算符:
+'1234' // 1234
+'9BX9' // NaN
在检查NaN时要小心(操作符===
和!==
在NaN
中不能像预期的那样工作)。使用:
isNaN(+maybeNumber) // returns true if NaN, otherwise false
发布于 2018-05-17 01:06:27
function isNumber(value: string | number): boolean
{
return ((value != null) &&
(value !== '') &&
!isNaN(Number(value.toString())));
}
发布于 2020-03-04 18:45:06
您可以使用Number.isFinite()
函数:
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite('0'); // false
Number.isFinite(null); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
注意:全局函数isFinite()
和后面的Number.isFinite()
之间有很大的不同。在前者的情况下,字符串强制被执行-所以isFinite('0') === true
而Number.isFinite('0') === false
。
另外,请注意这在IE中是不可用的!
https://stackoverflow.com/questions/23437476
复制相似问题