Actionscript 3 比较Actionscript 3中的parseInt和NaN

Actionscript 3 比较Actionscript 3中的parseInt和NaN,actionscript-3,nan,parseint,Actionscript 3,Nan,Parseint,AS3文档说明,如果将字符串传递给parseInt,该字符串不是一个数字,它将返回NaN。但是,当我尝试与NaN进行比较时,编译器会给出以下错误: Warning: 1098: Illogical comparison with NaN. This statement always evaluates to false. 这句话实际上是对的。与NaN比较将始终返回false。如何与NaN进行比较以检测解析的内容是否为NaN if( parseInt("test") == NaN ) {

AS3文档说明,如果将字符串传递给
parseInt
,该字符串不是一个数字,它将返回
NaN
。但是,当我尝试与
NaN
进行比较时,编译器会给出以下错误:

Warning: 1098: Illogical comparison with NaN. This statement always evaluates to false.
这句话实际上是对的。与NaN比较将始终返回
false
。如何与NaN进行比较以检测解析的内容是否为NaN

if( parseInt("test") == NaN )
{
   // do something (never gets here)
}
使用全局函数

if(isNaN(parseInt("test")))
{
   // do something 
}

isNaN()
函数比较。

每个人都是正确的,请使用
isNaN()
函数:

function isNumber(num:Number):Boolean{
  return num == num;
}
()

我从来没有真正喜欢过这种方法。我更喜欢做阳性检查

有趣的是,如果一个数字是NaN,那么它就不等于它自己:

var parsed_int:Number = parseInt("test");
if(parsed_int != parsed_int)
  trace("NaN");
因此,如果测试该数字是否等于其本身,则应给出阳性结果:

var parsed_int:Number = parseInt("123");
if(parsed_int == parsed_int)
  trace("Number");
阅读代码时,您的意图不是很清楚,因此如果您使用它,请务必对其进行注释

或者您可以添加一个顶级函数:

function isNumber(num:Number):Boolean{
  return num == num;
}
还有一个关于优化螺母的注释。内联版本是最快的


仅供参考:

拍拍额头。当然我现在记得我两年前也有同样的问题。为什么parseInt文档不引用isNaN函数呢?
isNaN
函数是自文档。如果没有注释来解释为什么要将一个值与它自身进行比较,它看起来就像是一段多余的代码。是的,但我总是觉得了解一些东西是如何工作的很有趣。另外,如果您希望仅在parseInt返回一个数字时执行某些操作,那么您将得到类似if(!isNaN(parseInt(“test”))的代码。不是数字吗?在我看来,这是一个丑陋的数字。
NaN
不是一个单一的数字,而是一个范围。此外,ECMA规范在比较中使用NAN:结果总是错误的。