隐式强制转换/数字检查会产生“意外的X”JSLint错误

时间:2011-02-12 13:45:58

标签: javascript jslint

这不是什么严重的问题,而是一个出于好奇的问题。 JSLINT.com中的以下脚本给出了一个奇怪的“意外”错误。我的脚本有效,但我仍然想知道是否有人可以解释错误。

var hashVar = parseInt(location.hash.replace('#',''), 10);
if(hashVar-0 === hashVar){L();}

错误:第3行第4个问题:意外的'hashVar'。

享受周末,Ulrik

1 个答案:

答案 0 :(得分:4)

你可能想要这个:

var hashVar = parseInt(location.hash.replace('#', ''), 10);
if ( !isNaN(hashVar) ) { L(); } 

此代码与原始代码具有相同的功能。


顺便说一下,这个:

if ( !isNaN(hashVar) ) { L(); }

可以进一步简化为:

isNaN(hashVar) || L();

- )


<强>解释

parseInt的返回值可以是:

a)整数数值
b)NaN

因此,如果要测试返回值是否为整数,只需使用isNaN()