2010-09-17 133 views
2

如果我沒有在我的代碼中專門輸入一個變量,它會編譯爲默認數據類型?例如,「每個...在」功能的效果最好,而無需輸入變量:ActionScript - 非類型變量的默認數據類型?

for each (var element in myArray) 
     { 
     //process each element 
     } 

做我元素變量有數據類型?如果輸入Object爲實際編寫元素:Object或者它有什麼關係?

編輯

實際上,這是一個壞榜樣,因爲元素變量將被輸入到任何元素是myArray的。

但它是如何工作的,如果一個變量是無類型的?它會變成什麼傳遞給它?

這裏是我的問題一個更好的例子:

var a = "i'm a string"; //does this var becomes a String? 

var b = 50.98; //does this var becomes a Number? 

var c = 2; //does this var becomes an int? 
+0

看到我更新... – Amarghosh 2010-09-17 12:56:32

回答

3

for each (var element in myArray)

element變量不具有任何數據類型 - 它是類型化的,因​​此可以容納任何東西。

是的,它相當於編寫element:Objectelement:*,但總是建議您鍵入變量 - 這將幫助您在運行代碼之前捕獲一些錯誤。如果不這樣做,mxmlc編譯器將發出警告,可通過將其鍵入e:Objecte:*來修復該警告。


var a = 45.3; //untyped variable `a` 
a = "asd";  //can hold anything 

/* 
    This is fine: currently variable `a` contains 
    a String object, which does have a `charAt` function. 
*/ 
trace(a.charAt(1)); 

a = 23; 
/* 
    Run time error: currently variable `a` contains 
    a Number, which doesn't have a `charAt` function. 
    If you had specified the type of variable `a` when 
    you declared it, this would have been 
    detected at the time of compilation itself. 
*/ 
trace(a.charAt(1)); //run time error 


var b:Number = 45.3; 
b = "asd"; //compiler error 
trace(a.charAt(1)); //compiler error 
+0

奇怪。好的,我會輸入它們,即使我使用的是Flash Professional,而不是Flash Builder,但它不會給出警告,但我認爲這是很好的做我會遷移到該編譯器。另外,actionscript文檔不會在for循環中鍵入var:http://bit.ly/a2tZc9 – TheDarkIn1978 2010-09-17 12:38:22

+0

始終鍵入。不僅要抓住錯誤,還要抓住性能。 Flash就是這樣,尋找每一種可能的優化都是不錯的主意,特別是像這樣簡單的優化。 – Raveline 2010-09-17 13:10:45

+0

總是輸入你的變量,吃你的蔬菜! – grapefrukt 2010-09-17 16:12:16