サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

isNaN()関数

ID: FN0801001 Product: Flash Platform: All Version: CS3/ActionScript 3.0

シンタックス
public function isNaN(num:Number):Boolean

引数
num:Number ― 数値として評価する式。

戻り値
BooleanNaNと評価されれば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日


Copyright © 2001-2008 Fumio Nonaka.  All rights reserved.