for循环中

for循环

i 的类型
打印 i 的类型,发现 i 是number类型。
for in循环中

打印 i 的类型

i 的类型
发现 i 的类型是string。


打印numbers[i+1]的值,发现是undefined,在数组里找不到。这是因为 i 是string类型而1是number类型,两者类型不同,所以 i+1 中的+充当了连接符,仅仅是在 i 的后面添了一个1,而不是对 i 的值加1。打印 i+1 的结果如下:

打印 i+1
numbers[11]对应数组中的31,也就解释了前图那么多undefined中出现了31。解决办法为将 i 转成number类型,parseInt(i),然后numbers[parseInt(i)+1]。