javascirpt,用谷歌控制台跑,一个代码块里的所有代码,不是按顺序串行执行的吗?

for (i in Array.from(Array(5).keys())){
    ii = parseInt(i+1)
    path="a"+i+" "+parseInt(i+1)+" "+ii+"b"
    console.log(path)
    }

/** 谷歌控制台执行结果:
    a0 1 1b
    a1 11 11b
    a2 21 21b
    a3 31 31b
    a4 41 41b

    想象的输出结果:
    a0 1 1b
    a1 2 2b 
    ...
**/
  1. 如题。如果不是按顺序执行,我该怎么控制它的执行顺序呢?
  2. parseInt()函数在第一次遍历后为什么会输出这样的结果?它是以什么样的形式被缓存的?第一次执行调用了两次parseInt(),为什么都正确输出了(i+1)的值?

萌新初学JS,被这个东西整蒙了- -

在用for (i in 对象) 遍历时 i 是对象中的属性名称,是字符串。
执行 i+1 是字符串的拼接,不是数值的相加。
应该是先把i转换成数值再 +1

for (i in Array.from(Array(5).keys())){
    ii = parseInt(i)+1
    path="a"+i+" "+(parseInt(i)+1)+" "+ii+"b"
    console.log(path)
}