элемент пропуска соединения javascript - почему это поведение

Я работал сsplice внутри вложенного цикла for, и я столкнулся с поведением, которое я не мог понять.

var a = [0, 1, 2, 3, 4];

for (b in a) {
    console.log(a);
    for (c in a) {
        console.log(c + '==' + a[c]);
        if (c === "1")
            a.splice(c, 1);
      }
 }

console.log(a);

Его вывод странный

    [0, 1, 2, 3, 4]
    "0==0"
    "1==1"
    "2==3"  // why is index 2 referring to value 3 , whereas it should refer to 2
    "3==4"
    [0, 2, 3, 4]
    "0==0"
    "1==2"
    "2==4"  //  index 2 referring to value 4 , whereas it should refer to 3
    [0, 3, 4]
    "0==0"
    "1==3"
    [0, 4]

Я склеиваю индекс 1, и он пропускает следующий элемент.

Почему это поведение ...

Здесь оформить заказ:http://jsbin.com/isahoj/3/edit

РЕДАКТИРОВАТЬ:
хорошо, я понимаю, что это смещает индекс после сплайсинга, но я вызываю сплайс после выполнения console.log () ... так как это сплайсинг раньше?

Ответы на вопрос(3)

Ваш ответ на вопрос