nullなStringをNumberにキャストする時、なにくわぬ顔で0にされる
こんにちは。今もっとも伸びてる男、安藤です。(髪の毛的な意味で)
文字列"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のようです。ヒャー!