Tam*_*Pap 218 javascript
有没有一种方法可以在没有if语句的情况下将NaN值转换为0:
if (isNaN(a)) a = 0;
Run Code Online (Sandbox Code Playgroud)
每次都检查我的变量是非常烦人的.
use*_*716 539
你可以这样做:
a = a || 0
Run Code Online (Sandbox Code Playgroud)
...将任何"假"值转换为0.
"假"值是:
falsenullundefined0"" (空字符串)NaN (不是数字)如果您愿意,可以这样:
a = a ? a : 0;
Run Code Online (Sandbox Code Playgroud)
......具有与上述相同的效果.
如果意图不只是测试NaN,那么你可以做同样的事情,但首先进行toNumber转换.
a = +a || 0
Run Code Online (Sandbox Code Playgroud)
这使用一元+运算符尝试转换a为数字.这具有将数字字符串转换为数字的附加好处'123'.
唯一出乎意料的事情可能是有人传递了一个可以成功转换为数字的数组:
+['123'] // 123
Run Code Online (Sandbox Code Playgroud)
这里我们有一个Array,它有一个数字字符串成员.它将成功转换为数字.
Wic*_*ams 28
使用双波浪号(双按位NOT) - ~~在JavaScript中做了一些有趣的事情.例如,您可以使用它代替Math.floor甚至替代它parseInt("123", 10)!它已经在网上进行了很多讨论,所以我不会介绍它为什么在这里工作,但是如果你感兴趣的话:JavaScript中的"双波浪形"(~~)运算符是什么?
我们可以利用双波形的这个属性来转换NaN为数字,并且很高兴这个数字为零!
console.log(~~NaN); // 0
Sak*_*ket 22
编写自己的方法,并在需要数字值的任何地方使用它:
function getNum(val) {
if (isNaN(val)) {
return 0;
}
return val;
}
Run Code Online (Sandbox Code Playgroud)
对任何事情都更简单有效:
function getNum(val) {
val = +val || 0
return val;
}
Run Code Online (Sandbox Code Playgroud)
...这会将 a 从任何“falsey”值转换为0.
“falsey”值是:
falsenullundefined0"" (空字符串)NaN (不是数字)