代码之家  ›  专栏  ›  技术社区  ›  Luke

比较ActionScript 3中的ParseInt和NaN

  •  4
  • Luke  · 技术社区  · 15 年前

    AS3文档声明,如果将字符串传递给 parseInt 那不是它会返回的数字 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)
    }
    
    3 回复  |  直到 15 年前
        1
  •  16
  •   alxx    15 年前

    与…比较 isNaN() 功能。

        2
  •  8
  •   Amarghosh    15 年前

    使用 isNaN() 整体函数

    if(isNaN(parseInt("test")))
    {
       // do something 
    }
    
        3
  •  2
  •   Joony s3rro    15 年前

    每个人都是正确的,使用 isNaN() 功能:

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

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

    有趣的是,如果一个数字是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()