Объявление массива Javascript: new Array (), new Array (3), ['a', 'b', 'c'] создают массивы, которые ведут себя по-разному

Рассмотрим этот пример кода Javascript:

a = new Array();
a['a1']='foo';
a['a2']='bar';

b = new Array(2);
b['b1']='foo';
b['b2']='bar';

c=['c1','c2','c3'];

console.log(a);
console.log(b);
console.log(c);

Результаты в консоли Firebug следующие:

Для a («[]» нужно было развернуть, нажав кнопку «+»):

[]      
a1  "foo"   
a2  "bar"

Для b:

[undefined, undefined]

Для c:

["c1", "c2", "c3"]

Мои вопросы:

  1. Использую ли я синтаксис array ['key'] = 'value' правильный?
  2. Почему массив b не работает должным образом?
  3. Почему массивы a и c по-разному отображаются в консоли? Также кажется, что jQuery не может перебирать массив a с помощью метода .each ().
  4. Не могли бы вы порекомендовать какие-либо хорошие учебники по поведению массива Javascript?

ПРИМЕЧАНИЕ: Firebug Google Chrome отображает только [] для массива 'a', без возможности его расширения.

РЕДАКТИРОВАТЬ: Хорошо, похоже, что массивы в Javascript имеют только числовые ключи, поэтому добавление строки в качестве имени ключа делает объект из массива. Но почему jQuery .each не работает с ним?

$.each(a, function ()
    {
    alert ('derp');
    })

Этот код, добавленный к скрипту, не генерирует никаких предупреждений.

47
задан sbichenko 7 December 2013 в 20:59
поделиться