こんにちは。今もっとも伸びてる男、安藤です。(髪の毛的な意味で)

文字列"123"や"00456"など半角数字だけの文字列はNumberにキャストしてやることができます。
が、文字列が""だったりそもそも未定義だった時、エラーが出ずに0としてキャストされてしまいました。

その現象は以下のようにして再現できます。

var s1:String = "00456";
trace(Number(s)); //出力:456

var s2:String;
trace(Number(s2)); //出力:0 ←(`・д´・ ;)!?

s2はnullなのにNumberにキャストするとなぜか0!どういうこと・・・
他のクラスでもためしてみたら、

var m:MovieClip;
var e:Event;
var o:Object;

trace(Number(m));
trace(Number(e));
trace(Number(o));
//出力:すべて0

うむむ。クラスとか関係なしに、とりあえず0にしとけみたいな内部構造なんでしょうか。

var z;
trace(Number(z)); //出力:NaN

なぜか型指定をしなかった場合はNaNのようです。ヒャー!

HTML5飯