详解Js里的for…in和for…of的用法
之前看编程方法学,for循环的基本格式是
for(init;test;step){ statement } //例如 for(inti=0,i<10;i++){ ... }
后来接触了python,for循环的格式更加的简单优雅,只要一个for……in语句就可以直接遍历对象。
foriinarry
今天看廖雪峰的官网,居然看到了js里更神奇的操作,for……of循环,这个类似于python的for……in循环了,虽然js里也有for……in循环,可是遍历的是对象的属性,类似于键值对里的键key,当它遍历array的时候遍历的是array的索引,
vara=['A','B','C']; for(variina){ alert(i);//'0','1','2' alert(a[i]);//'A','B','C' }
or…of循环是ES6引入的新的语法,用for…of循环遍历集合,用法如下:
vara=['A','B','C']; vars=newSet(['A','B','C']); varm=newMap([[1,'x'],[2,'y'],[3,'z']]); for(varxofa){//遍历Array alert(x);//'A','B','C' } for(varxofs){//遍历Set alert(x);//'A','B','C' } for(varxofm){//遍历Map alert(x[0]+'='+x[1]);//1='x',2='y',3='z' }
for…in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
当我们手动给Array对象添加了额外的属性后,for…in循环将带来意想不到的意外效果:
vara=['A','B','C']; a.name='Hello'; for(varxina){ alert(x);//'0','1','2','name' }
for…in循环将把name包括在内,但Array的length属性却不包括在内。
for…of循环则完全修复了这些问题,它只循环集合本身的元素:
vara=['A','B','C']; a.name='Hello'; for(varxofa){ alert(x);//'A','B','C' }
以上所述是小编给大家介绍的Js里的for…in和for…of的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。