2013-02-10 80 views
0

所以,我認爲我的問題應該是相當直接的,我只是尋找一點澄清,爲什麼我得到這些看似奇怪的結果,當我嘗試使用null的Array.indexOf方法。這裏是我的代碼:奇怪的輸出與我的as3陣列

var myArray:Array = new Array(20); 
trace(myarray.indexOf(null)); //output: -1 
trace(myarray[0] == null); //output true 

所以,它看起來像一個數組的元素被默認爲在長度構造函數的參數被初始化爲空,但爲什麼的indexOf(空)不是返回0?陣列的

+0

我可能是錯的,但我認爲'null'與合作,特別是與這樣的功能一件棘手的事情。我會嘗試換行(即跟蹤函數之前跟蹤條件)並查看它是否有所不同。 – puggsoy 2013-02-10 07:36:53

+0

@puggsoy,輸出是相同的,不管語句的順序是什麼(我希望它會......如果==操作符修改我的數組以使indexOf工作,我會感到不安:P) – Kreg 2013-02-10 08:06:22

回答

3

元件被默認爲null的

不。這是JS & AS3的流行信念。一個物業,當它沒有定義時,是undefined

此外,任何人執行indexOf函數,顯然會檢查在實際開始搜索之前,要搜索的值是否爲null

此外我認爲你正在尋找這樣的:

var myArray:Array = new Array(20); 
trace(myArray.indexOf(undefined)); //output: 0 
trace(myArray[0] == null); //output true 
+0

太棒了,那正是我所期待的,非常感謝! – Kreg 2013-02-10 15:17:02

2

如果只有一個數字參數傳遞給Array構造函數,它被認爲是長度,它是通過使用整數轉換爲一個整數()函數。 http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000737.html

var myArray:Array = new Array(20); 
trace(myArray.length); //output: 20 

至於nullundefined之間的區別,你可以檢查此http://www.bobbyberberyan.com/2011/01/as3-undefined-vs-null/

+0

ooh,對於null與未定義鏈接+1,我沒有意識到as3是如此javascripty – Kreg 2013-02-10 15:18:20