我需要检查值isNaN("") === true
,但它返回false,但parseFloat("")
返回NaN
。
为什么我需要这个是因为我正在使用JSON.stringify()
进行哈希检查,而knockout observable而不是numeric值会返回一个字符串数值。
E.g。而不是1.23
它返回"1.23"
。
问题:如何在不获取NaN
的情况下解析字符串数值?
答案 0 :(得分:4)
如何在不获取NaN作为结果的情况下解析字符串数值?
嗯......你不能,如果这些值不能被解析为数值。但"1.23"
可以解析为数值:
var num = parseFloat("1.23");
console.log(num); // 1.23
如果您需要检查结果是否为NaN
,请检查结果:
isNaN(parseFloat(yourInput)) === true
...除了=== true
部分中有零点,所以:
isNaN(parseFloat(yourInput))
parseFloat
以及将字符串传递到isNaN
后使用的默认强制编号遵循不同的规则。特别是,parseFloat
将停止解析第一个非数字,但isNaN
[实际上]使用Number
函数,如果存在非数字字符,则会失败。因此,如果您需要依赖parseFloat
来自非NaN
的结果,则必须致电parseFloat
并将其结果传递给isNaN
。
以下是一个示例:"1.23aaa"
让我们看看我们在那里看到的内容:
console.log(parseFloat("1.23aaa")); // 1.23
console.log(isNaN("1.23aaa")); // true!!
console.log(isNaN(parseFloat("1.23aaa"))); // false
parseFloat
从第一个a
开始尝试停止,但是通过将字符串传递到isNaN
来调用从字符串到数字的默认强制不会