5

让我们运行这个 javascript 代码:

var value = parseInt("");
console.log(value != Number.NaN? value : null);

为什么此代码Nan在控制台而不是在控制台中输出null

如何更改我的代码以实际获取null对象?

我尝试将我的代码包装在这样的函数中:

function parseIntOrDefault(value, def){
    var candidate = parseInt(value);
    if(candidate != Number.NaN) return candidate; else return def;    
}

console.log(parseIntOrDefault('', null));

但这表现相同。

这是一个说明我的问题的 jsFiddle:http: //jsfiddle.net/stevebeauge/BRP94/

4

2 回答 2

11

你应该使用

isNaN(value);

检查NaN

因为:

console.log(NaN === NaN); // false!

NaN不等于自身

这可能看起来很奇怪,但如果您考虑NaN.

假设您有以下代码:

var a, b, c;
// a = 0;oops a is still undefined so we'll get NaN if we do an operation with it
b = 5;
c = 6
if (a + b === a + c) {
    console.log("math error?");
}

您不想得出 5 === 6 的表面结论。

于 2013-06-28T15:56:42.540 回答
1
if(isNaN(candidate))return null; else return candidate;    
于 2013-06-28T16:03:03.987 回答