0

だから、私の質問はかなり簡単だと思います.nullでArray.indexOfメソッドを使用しようとすると、これらの一見奇妙な結果が得られる理由について少し説明したいと思います。これが私のコードです:

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

長さコンストラクターのパラメーターが初期化されると、配列の要素がデフォルトで null に設定されているように見えますが、indexOf(null) が 0 を返さないのはなぜですか?

4

2 に答える 2

3

配列の要素はデフォルトで null に設定されます

いいえ。これはJSAS3に対する一般的な信念です。定義がないプロパティはundefinedです。

さらに、indexOf 関数を実装する人は、実際に検索を開始する前に、検索する値がnullかどうかを明らかにチェックします。

また、あなたはこれを探していると思います:

var myArray:Array = new Array(20);
trace(myArray.indexOf(undefined)); //output: 0
trace(myArray[0] == null); //output true
于 2013-02-10T08:41:59.697 に答える
2

単一の数値パラメーターのみが Array コンストラクターに渡される場合、それは長さと見なされ、Integer() 関数を使用して整数に変換されます。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

nullとの違いについては、これundefinedを確認できます http://www.bobbyberberyan.com/2011/01/as3-undefined-vs-null/

于 2013-02-10T13:28:33.460 に答える