位置(または0)インデックスを使用する場合、値は配列内に配置されることに注意してください。
var array = [];
array[0] = "Foo";
array[1] = "Bar";
// Result: ["Foo", "Bar"]
// Length: 2
これは、インデックス以外の値(0-9 +ではない)を追加する場合には当てはまりません。
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz"; // Not a proper array index - kill it
// Result: ["Foo", "Bar"]
// Length: 2
ルールに従ってプレイする場合にのみ、値が配列に配置されます。そうしないと、受け入れられません。ただし、これらはArrayオブジェクト自体で受け入れられます。これは、JavaScriptのほぼすべての場合に当てはまります。配列内の唯一の値です["Foo", "Bar"]
が、アクセスできます"Fizzbuzz"
:
array[-1]; // "Fizzbuzz"
ただし、「インデックス」が無効であるため、これは配列値の一部ではないことに注意してください。代わりに、別のメンバーとして配列に追加されました。同じ方法で他の配列メンバーにアクセスできます。
array["pop"]; // function pop() { [native code] }
ここではpop
、配列のメソッドにアクセスしていることに注意してください。これにより、ネイティブコードが含まれていることが通知されます。「pop」のキーを使用して配列値にアクセスするのではなく、配列オブジェクト自体のメンバーにアクセスします。オブジェクトのパブリックメンバーを循環することで、これをさらに確認できます。
for (var prop in array)
console.log(prop, array[prop]);
これは以下を吐き出します:
0 Foo
1 Bar
-1 Fizzbuzz
繰り返しになりますが、これはオブジェクト上にありますが、配列内にはありません。
素晴らしい質問です!確かにダブルテイクをさせてくれました。