javascript splice skipping element- porque esse comportamento

Eu estava trabalhando comsplice dentro de um loop for aninhado e me deparei com um comportamento que eu não conseguia entender.

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);

Sua saída é estranha

    [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]

Eu estou combinando o índice 1 e está pulando o próximo elemento.

Por que esse comportamento ...

Aqui checkout:http://jsbin.com/isahoj/3/edit

EDITAR:
ok, eu entendo que desloca o índice após splicing, mas estou chamando splice depois de fazer o console.log () ... então, como é emendado anteriormente?

questionAnswers(3)

yourAnswerToTheQuestion