为了账号安全,请及时绑定邮箱和手机立即绑定

for/in复制对象属性的疑问

for/in复制对象属性的疑问

SMILET 2019-02-22 15:19:28
var o = {x:1,y:2,z:3};var a = [],i = 0;for(a[i++] in o){}console.log(a)//['x','y','z'];在看权威教程的时候,看到这个代码,有些疑问,声明的空数组a,在for/in循环中a[i++]应该是undefined啊,为何循环出来的是对象o的属性值所组成的数组。这个过程是怎么发生的??
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

for(a[i++] in o)每次循环的时候,把对象o的属性赋值给a[i],然后i++
所以
第一次遍历的时候,遍历出o的属性"x",然后把"x"赋值给a[i],此时i等于0,所以是a[0] = "x",然后i++,此时i变成1a变成["x"];
第二次遍历的时候,遍历出o的属性"y",然后把"y"赋值给a[i],此时i等于1,所以是a[1] = "y",然后i++,此时i变成2a变成["x", "y"];
第三次遍历的时候,遍历出o的属性"z",然后把"z"赋值给a[i],此时i等于2,所以是a[2] = "z",然后i++,此时i变成3a变成["x", "y", "z"];
遍历结束,a的值变成['x','y','z']i的值变成3

查看完整回答
反对 回复 2019-02-24
  • 1 回答
  • 0 关注
  • 359 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信