在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插件可以做类似的事情?
当前回答
//////////////////////////////////////////////////////
function ToInt(x){x=parseInt(x);return isNaN(x)?0:x;}
//////////////////////////////////////////////////////
var x = ToInt(''); //-> x=0
x = ToInt('abc') //-> x=0
x = ToInt('0.1') //-> x=0
x = ToInt('5.9') //-> x=5
x = ToInt(5.9) //-> x=5
x = ToInt(5) //-> x=5
其他回答
对于不受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)
为什么不重写这个函数呢?在这种情况下,你总是可以确保它在NaN的情况下返回0:
(function(original) {
parseInt = function() {
return original.apply(window, arguments) || 0;
};
})(parseInt);
现在,在代码中的任何地方:
parseInt('') === 0
你可以有非常干净的代码,我有类似的问题,我解决它使用:
var a="bcd";
~~parseInt(a);
对空字符串进行单独检查(因为这是一个特定的情况),在这种情况下将其设置为0。
您可以在开头添加“0”,但随后需要添加一个前缀,以表明它是小数而不是八进制数
对于其他人寻找这个解决方案,只需使用:~~没有parseInt,这是最干净的模式。
var a = 'hello';
var b = ~~a;
如果是NaN,它将返回0。
奥林匹克广播服务公司。此解决方案仅适用于整数