Jop*_*per 280 javascript nan
是否有可能以某种方式返回0而不是NaN在JavaScript中解析值时?
如果空字符串parseInt返回NaN.
是否可以在JavaScript中执行类似的操作来检查NaN?
var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)
或者可能有另一个函数或jQuery插件可能做类似的事情?
Mat*_*hew 713
var s = '';
var num = parseInt(s) || 0;
gpr*_*ant 49
你也可以使用这个isNaN()功能:
var s = ''
var num = isNaN(parseInt(s)) ? 0 : parseInt(s)
对于不受限制的人parseInt,可以使用按位OR运算符(隐式调用ToInt32其操作数).
var value = s | 0;
// NaN | 0     ==>> 0
// ''  | 0     ==>> 0
// '5' | 0     ==>> 5
// '33Ab' | 0  ==>> 0
// '0x23' | 0  ==>> 35
// 113 | 0     ==>> 113
// -12 | 0     ==>> -12
// 3.9 | 0     ==>> 3
注意:ToInt32不同于parseInt.(即parseInt('33Ab') === 33)
问题
其他答案没有考虑到0是虚假的,因此以下将是20而不是0:
var myNumber = parseInt('0') || 20; // 20
解决方案
我提出了一个辅助函数,可以解决大多数问题:
function getNumber(number, defaultNumber) {
    return isNaN(parseInt(number, 10)) ? defaultNumber : parseInt(number, 10);
}
辅助函数将给出以下结果:
getNumber('0', 20); // 0
getNumber('2', 20); // 2
getNumber('2.2', 20); // 2
getNumber('any string', 20); // 20
getNumber(undefined, 20); // 20
getNumber(null, 20); // 20
getNumber(NaN, 20); // 20
getNumber(false, 20); // 20
getNumber(true, 20); // 20
在我看来,这项工作是否比 parseInt 更干净,使用 +operator
var s = '';
console.log(+s);
var s = '1024'
+s
1024
s = 0
+s
0
s = -1
+s
-1
s = 2.456
+s
2.456
s = ''
+s
0
s = 'wtf'
+s
NaN