undefined.toString()?! [Edit]

Flash MX 2004 7.2オンラインヘルプ[ActionScriptリファレンスガイド] > [undefined]より:
「Flash Player 6以前用にパブリッシュされたファイルでは、undefined.toString()は""(空のストリング)になります。Flash Player 7以降用にパブリッシュされたファイルでは、undefined.toString()はundefinedになります。」

ひと言でいって「嘘」、ふた言なら「無茶」です。

Flash Player 7だろうが、6以前だろうが、同じ結果になります。

スクリプト001■undefined.toString()の戻り値を確認
var myResult = undefined.toString();
trace(myResult); // 出力: undefined
trace(typeof myResult); // 出力: undefined

undefined.toString()の戻り値は、undefinedだということになります。Flash Player 6でなぜ空文字列("")にならないのかとか、typeof演算子で調べた結果がなぜ"string"でないのかなどと不思議に思ってはいけません。そうなったら、術中にはまってます。

スクリプト002■undefined.toStringとは?
trace(undefined.toString); // 出力: undefined

そうです、undefinedにはtoStringなどというメソッドが存在しないのです。存在しないから、呼出しても何も返りません。何も返らないと、undefinedが戻り値と看做されます。それだけのことです。

undefinedの文字列として評価された値を調べたいなら、たとえばString()関数を使うべきでしょう。これで、Flash Player 7なら文字列"undefined"、Flash Player 6以前では空文字列""が出力されます(空文字列は[出力]パネルに表示されないので、単に改行されます)。

スクリプト003■String(undefined)を調べる
var myResult = String(undefined);
trace(myResult); // 出力(Flash Player 7): undefined
trace(typeof myResult); // 出力: string

参考:「undefined

コメント

この記事へのコメント

  1. 1.野中 文雄(2004年10月21日 07:49)

    ヘルプの次回更新で、修正されるようです。
    http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00001866.html

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事