4

AS3 文档指出,如果您将字符串传递给parseIntthat is not a number ,它将返回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)
}
4

3 回答 3

16

比较isNaN()函数。

于 2010-10-18T07:24:02.360 回答
9

使用isNaN()全局函数

if(isNaN(parseInt("test")))
{
   // do something 
}
于 2010-10-18T07:23:54.873 回答
2

大家说的都对,使用isNaN()函数:

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/package.html#isNaN ()

我从来没有真正喜欢过这种方法。我更喜欢测试阳性。

有趣的是,如果一个 Number 是 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;
}

还有一个关于优化坚果的说明。内联版本是最快的。

仅供参考: http: //www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/package.html#parseInt()

于 2010-10-18T08:10:00.127 回答