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.野中 文雄(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