シンタックス
public function isNaN(num:Number):Boolean
引数
num:Number ― 数値として評価する式。
戻り値
Boolean ― NaNと評価されればtrue、そうでなければfalseを返します。
説明
引数が数値として評価できない値かどうかを調べます。
isNaN()関数は、渡された引数を数値に変換しようと試みます。その結果数値として評価できず、NaNに変換されるとtrueが返されます。数値に変換できれば、falseを返します。
この関数を使う理由は、数値演算の対象として適さない値NaNを、等価比較(==演算子)で調べることができないからです[*1]。
Number型として受取れるおもなデータについて[*2]、数値変換の結果とisNaN()関数の戻り値を下表001に掲げます。
表001■Number型で受取れるデータの数値変換結果とisNaN()関数の戻り値
値 |
データ型 |
数値変換結果 |
isNaN()の戻り値 |
undefined
|
void
|
NaN
|
true
|
null
|
Null
|
0
|
false
|
NaN
|
Number
|
そのまま
|
true
|
Infinity/-Infinity
|
false
|
通常の数値
|
Number/int/uint
|
false
|
[*1] NaNは、順序づけされない(unordered)特別な値だとされます。それはNumber型の値でありながら、他の数値と比べたとき、(1)その値より小さいか、(2)その値と等しいか、(3)その値より大きいか、のいずれにも当てはまらない状態を意味します(IEEE 754浮動小数点演算「順序付けできない(unordered)とは」)。
そのため、不等価演算子(!=と!==)を除き、等価演算子(==と===)や関係演算子(<や>、<=、>=)でNaNとの比較を行うと、NaN自身を含むすべての数値に対してfalseを返します。
trace(NaN == NaN); // 出力: false
trace(NaN != NaN); // 出力: true
[*2] Number型で受取れない値も、[Strictモード]を解除する(「rootプロパティでメインタイムラインの関数にアクセスできない」の「対処法」[1]「[strictモード]の解除」参照)か型指定をしない変数に格納すれば、isNaN()関数に渡して評価することは可能です(ただし、データ型はつねに指定することをお勧めします)。その場合も、数値に変換できるかどうかによって、可能ならfalse、そうでなければtrueが返されます。
たとえば、文字列(String型)の一部は、数値に変換することができます。数字の文字列はその数値に、空文字列""や半角スペース" "は0に変換されます。また、ブール(論理)値(Boolean型)のtrueは1に、falseは0として評価されます。
var n1_str = "1";
var null_str = "";
var bTrue = true;
trace(isNaN(n1_str)); // 出力: false
trace(isNaN(null_str)); // 出力: false
trace(isNaN(bTrue)); // 出力: false
|
Player
ActionScript 3.0/Flash Player 9以降。
参考
Adobe LiveDocs[ActionScript 3.0コンポーネントリファレンスガイド] > [トップレベル] > [isNaN()関数]
mozilla developer center[Core JavaScript 1.5 Reference] > [Global Functions] >[isNaN]
作成者: 野中文雄
作成日: 2008年1月7日