在JavaScript中解析值时,是否可能以某种方式返回0而不是NaN ?

如果是空字符串,parseInt返回NaN。

是否有可能在JavaScript中做这样的事情来检查NaN?

var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)

或者可能有另一个函数或jQuery插件可以做类似的事情?


当前回答

你可以有非常干净的代码,我有类似的问题,我解决它使用:

var a="bcd";
~~parseInt(a);

其他回答

对空字符串进行单独检查(因为这是一个特定的情况),在这种情况下将其设置为0。

您可以在开头添加“0”,但随后需要添加一个前缀,以表明它是小数而不是八进制数

为什么不重写这个函数呢?在这种情况下,你总是可以确保它在NaN的情况下返回0:

(function(original) {
    parseInt = function() {
        return original.apply(window, arguments) || 0;
    };
})(parseInt);

现在,在代码中的任何地方:

parseInt('') === 0

你可以有非常干净的代码,我有类似的问题,我解决它使用:

var a="bcd";
~~parseInt(a);

我很惊讶没有看到任何人提到使用Number()。如果提供,它将解析小数,因此将不同于parseInt(),但是它已经假设以10为基数,并将“”甚至“”转换为0。

你也可以使用isNaN()函数:

var s = ''
var num = isNaN(parseInt(s)) ? 0 : parseInt(s)