天天看點

揭開AS程式的外紗(二) -- 被忽視的資料類型

     不少朋友和我說,資料類型寫的麻煩,又沒什麼大用。

        讓我們先比較下面兩行代碼:

        var i = new Array(1,2);

        和

        var i:Array = new Array(1,2);

        上面那句和下面那句的差別僅僅是:下面那句對變量标注了資料類型。在實際執行過程中,效果是完全一樣的。但很明顯,上面那句看起來要簡潔的多了。

        是以,在不少的AS代碼中,類似這樣的語句看到的非常多,比如:

        var i = 5;

        var i = [1,2];

        var i = "string";

        但真的是一樣的嗎?讓我們再比較兩段代碼:

        i = 5;

        trace(typeof(i));

       var i:Array = new Array(1,2);

       i = 5;

       trace(typeof(i));

       在Flash中運作,上面那段代碼完全通過,輸出變量的類型:Number

       而下面那段代碼無法通過,提示“1067: int 類型值的隐式強制指令的目标是非相關類型 Array。”

       看到差別了嗎?這樣的情況是我們希望避免的,但如果沒有指定資料類型,在程式編譯的時候,并不會産生錯誤提示。而如果發生這樣的錯誤,是很難排查的。也許10+1得到的結果就不是11而是101(字元類型處理)。

       事實上,AS3采用了比AS2更為嚴格的檢測機制。例如,我們看下面這個例子:

       首先,我們在舞台上建立一個執行個體名為tt的動态文本框。然後在第一幀寫入以下代碼:

       var i:Number = 500;

       tt.text = i;

       在Flash8中,該程式順利通過。但在Flash CS3中運作,産生資料類型不符合的報錯。

       是以,在編寫AS代碼的時候,請盡量養成規範、良好的書寫習慣,這對我們的學習是有利的。

本文轉自 windtoto 51CTO部落格,原文連結:http://blog.51cto.com/windtoto/370302,如需轉載請自行聯系原作者

繼續閱讀