有没有一种方法将NaN值转换为0而不使用if语句?例子:

if (isNaN(a)) a = 0;

每次检查我的变量都很烦人。


当前回答

对任何事情都更简单有效的方法:

function getNum(val) {
   val = +val || 0
   return val;
}

...这将把a从任何“假”值转换为0。

“伪”值是:

假 零 未定义的 0 ""(空字符串) NaN(非数字)

其他回答

编写自己的方法,并在任何需要数值的地方使用它:

function getNum(val) {
   if (isNaN(val)) {
     return 0;
   }
   return val;
}

对任何事情都更简单有效的方法:

function getNum(val) {
   val = +val || 0
   return val;
}

...这将把a从任何“假”值转换为0。

“伪”值是:

假 零 未定义的 0 ""(空字符串) NaN(非数字)

你可以这样做:

a = a || 0

...这将把a从任何“假”值转换为0。

“伪”值是:

假 零 未定义的 0 ""(空字符串) NaN(非数字)


如果你喜欢,也可以这样:

a = a ? a : 0;

...这和上面的效果是一样的。


如果意图不仅仅是测试NaN,那么您可以做同样的事情,但首先要做toNumber转换。

a = +a || 0

它使用一元+运算符将a转换为数字。这有一个额外的好处,可以将数字字符串“123”转换为数字。

唯一意想不到的事情可能是,如果有人传递一个可以成功转换为数字的数组:

+['123']  // 123

这里我们有一个数组,它有一个成员是数字字符串。它将成功地转换为一个数字。

请试试这个简单的功能

var NanValue = function (entry) {
    if(entry=="NaN") {
        return 0.00;
    } else {
        return entry;
    }
}

var i = [NaN, 1,2,3]; var j = i.map(i =>{返回isNaN(i) ?0: i}); console.log (j)