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的属性值所组成的数组。这个过程是怎么发生的??

垃圾佬康哥垃圾佬康哥提问于
Amor陌a回答于

for(a[i++] in o)每次循环的时候,把对象o的属性赋值给a[i],然后i++;

所以

第一次遍历的时候,遍历出o的属性"x",然后把"x"赋值给a[i],此时i等于0,所以是a[0] = "x",然后i++,此时i变成1,a变成["x"];

第二次遍历的时候,遍历出o的属性"y",然后把"y"赋值给a[i],此时i等于1,所以是a[1] = "y",然后i++,此时i变成2,a变成["x", "y"];

第三次遍历的时候,遍历出o的属性"z",然后把"z"赋值给a[i],此时i等于2,所以是a[2] = "z",然后i++,此时i变成3,a变成["x", "y", "z"];

遍历结束,a的值变成['x','y','z'],i的值变成3。

回答过的其他问题

服务器上的MongoDB如何在本地连接?

实例初始化后,可以通过各语言驱动进行访问数据库,进行数据存取操作。

需要使用CVM通过内网进行访问,暂不支持外网访问。

区块链是什么?

以下 是wiki的描述: 区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即...... 展开详请

Linux一键安装web环境包安装的环境,无法安装ssl证书?

将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。 更新Nginx根目录下 conf/nginx.co...... 展开详请

5G技术将可能带动哪些领域的发展?

5G有三大应用场景:eMBB,mMTC 和URLLC。eMBB场景主要是3D/超高清视频等大流量移动宽带业务;mMTC场景主要是大规模物联网业务;URLLC场景则包括无人驾驶、工业自动化等需要低时延、高可靠连接的业务。 所以说5G的出现将会带动物联网领域的迅速发展。物联网应用领域...... 展开详请

如何通过API添加语音短信模板?

语音短信貌似是没有模板的把: https://yun.tim.qq.com/v5/tlsvoicesvr/sendvoice?sdkappid=xxxxx&random=xxxx 注:sdkappid 请填写您在腾讯云上申请到的,random 请填成随机数。 请求参数 { ...... 展开详请

apache 怎么配置 https ?

可以去论坛找下啊 教程一大堆,不过楼上说的也没差啦 就修改个配置文件就可以了

所属标签

扫码关注云+社区

领取腾讯云代金券