关于JavaScript for in的问题

代码如下

var obj = {
    a:1,
    b:2,
    c:3
}
function keys(obj){
    var a = [];
    for(a[a.length] in obj);
    return a ;
}

这个代码for in语句中,循环应该是从0-3吧。那么为什么,a.leng取出来一直是3?即使我这样取也是3

for(a[a.length] in obj);
    {
        (function (i) {
            console.log(i)
        })(a.length)
    }

或者这样

    let ind=0;
    for(a[ind++] in obj);
    {
        (function (i) {
            console.log(i)
        })(ind)
    }

问题是
1.这个for in中a[a.length]是循坏累加的吗?
2.为什么我无法取得从0-3变化数值

阅读 2.3k
3 个回答
for(a[a.length] in obj) ; // <<<<< 这里有一个 ; 的话,你的循环体就是一个空语句。
                          // 下面的语句在循环外,所以只打印最终的 a.length (循环已经结束了)
    {
        (function (i) {
            console.log(i)
        })(a.length)
    }

没看懂你想干嘛,建议你修改下
你想循环对象的属性就直接for(var prop in obj)
下面的你带个for后面带个分号就结束了,肯定只有一次循环

明明是 0-2……

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题