让我们运行这个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/
答案 0 :(得分: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的看似结论。
答案 1 :(得分:1)
if(isNaN(candidate))return null; else return candidate;