在JavaScript中解析值时,是否可能以某种方式返回0而不是NaN ?
如果是空字符串,parseInt返回NaN。
是否有可能在JavaScript中做这样的事情来检查NaN?
var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)
或者可能有另一个函数或jQuery插件可以做类似的事情?
在JavaScript中解析值时,是否可能以某种方式返回0而不是NaN ?
如果是空字符串,parseInt返回NaN。
是否有可能在JavaScript中做这样的事情来检查NaN?
var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)
或者可能有另一个函数或jQuery插件可以做类似的事情?
当前回答
为什么不重写这个函数呢?在这种情况下,你总是可以确保它在NaN的情况下返回0:
(function(original) {
parseInt = function() {
return original.apply(window, arguments) || 0;
};
})(parseInt);
现在,在代码中的任何地方:
parseInt('') === 0
其他回答
一个仍然允许使用基数的辅助函数
function parseIntWithFallback(s, fallback, radix) {
var parsed = parseInt(s, radix);
return isNaN(parsed) ? fallback : parsed;
}
var value = isNaN(parseInt(tbb)) ? 0 : parseInt(tbb);
对空字符串进行单独检查(因为这是一个特定的情况),在这种情况下将其设置为0。
您可以在开头添加“0”,但随后需要添加一个前缀,以表明它是小数而不是八进制数
这是一个tryParseInt方法,我正在使用,这将默认值作为第二个参数,所以它可以是任何你需要的。
function tryParseInt(str, defaultValue) {
return parseInt(str) == str ? parseInt(str) : defaultValue;
}
tryParseInt("", 0);//0
tryParseInt("string", 0);//0
tryParseInt("558", 0);//558
在我看来,这项工作比parseInt干净得多,使用+操作符
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