在AS中,我们用is操作符来判断数据类型。
但在 uint , int , number 这些数值类型中的判断结果会是怎样呢?
我们来做个小测试:
可见is操作符对这三种数据类型的数据判断中并不按照最初定义的数据类型进行严格判断,在可转换的情况下会判断为true。
我们用 isNaN() 函数检查一个数学表达式是否成功地计算为一个数字,如果该值为 NaN
(非数字),则返回 true。
NaN 值是 Number 数据类型的特殊成员,但不是 int 或 uint 数据类型的成员,用来表示“非数字”值。
这里顺便介绍下容易被大家忽略的两个 AS 顶级常量 -Infinity 和 Infinity:
-Infinity: 表示负
Infinity
的特殊值。此常量的值与 Number.NEGATIVE_INFINITY
相同。
Infinity: 表示正
Infinity
的特殊值。此常量的值与 Number.POSITIVE_INFINITY
相同。
接下来继续做一组测试:
由此可见我们在检查一个变量是否是合法的 Number 时就不能简单的使用 is Number 了, 而要使用 isNaN() 函数了。
当 !isNaN(value) 返回 true 并且不等于 +/-Infinity 就表示是一个合法的 Number 值。