javascript
if (parseInt(split_value[0])==NaN || parseInt(split_value[1]) ==NaN ) {
return
} else {
let newsssA = parseInt(split_value[0] ? split_value[0] : 0);
let newsssB = (split_value[1] ? split_value[1] : 0);
that.new_zl = newsssA + "." + newsssB;
}
以上是错误演示
当时做的这个逻辑是返回 nan 就不做值的处理
结果 发现 一直没有跳过循环,还是走的 else
测试发现
javascript
let empiy = undefined;
console.log(isNaN(parseInt(empiy)));
console.log(parseInt(empiy) == NaN);
去网上搜索发现
NaN ,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何与NaN进行运算的结果均会为NaN,NaN与自身不相等(NaN不与任何值相等)。
javascript
NaN=NaN;
NaN
NaN==NaN;
false
NaN===NaN;
false
javascript
alert(isNaN(NaN)); //true
alert(isNaN(99)); //false(99是一个数值)
alert(isNaN("99")); //false(可以被转换成数值99)
alert(isNaN("nan")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)
ECMAScript定义了 isNaN() 函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否"不是数值"。 isNaN() 在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串 "10" 或 Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回 true 。
参考文章