详解Js里的for…in和for…of的用法


Posted in Javascript onMarch 28, 2019

之前看编程方法学,for循环的基本格式是

for(init;test;step ){
 statement
}
//例如
for(int i=0,i<10;i++){
 ...
}

后来接触了python,for循环的格式更加的简单优雅,只要一个for ……in语句就可以直接遍历对象。

for i in arry

今天看廖雪峰的官网,居然看到了js里更神奇的操作,for ……of循环,这个类似于python的for ……in循环了,虽然js里也有for ……in循环,可是遍历的是对象的属性,类似于键值对里的键key,当它遍历array的时候遍历的是array的索引,

var a = ['A', 'B', 'C'];
for (var i in a) {
 alert(i); // '0', '1', '2'
 alert(a[i]); // 'A', 'B', 'C'
}

or … of循环是ES6引入的新的语法,用for … of循环遍历集合,用法如下:

var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
 alert(x);//'A', 'B', 'C'
}
for (var x of s) { // 遍历Set
 alert(x);//'A', 'B', 'C'
}
for (var x of m) { // 遍历Map
 alert(x[0] + '=' + x[1]);//1='x',2='y',3='z'
}

for … in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
当我们手动给Array对象添加了额外的属性后,for … in循环将带来意想不到的意外效果:

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
 alert(x); // '0', '1', '2', 'name'
}

for … in循环将把name包括在内,但Array的length属性却不包括在内。

for … of循环则完全修复了这些问题,它只循环集合本身的元素:

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
 alert(x); // 'A', 'B', 'C'
}

以上所述是小编给大家介绍的Js里的for…in和for…of的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery全选/全不选/反选另一种实现方法(配合原生js)
Apr 07 Javascript
jQuery实现长按按钮触发事件的方法
Feb 02 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
JS中判断null的方法分析
Nov 21 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
javascript的惯性运动实现代码实例
Sep 07 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 Javascript
ES7之Async/await的使用详解
Mar 28 #Javascript
详解vue-cli3多环境打包配置
Mar 28 #Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 #Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 #Javascript
详解一个基于套接字实现长连接的express
Mar 28 #Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 #Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 #Javascript
You might like
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
PHP与SQL注入攻击[二]
2007/04/17 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
Javascript浅谈之this
2013/12/17 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
python 字典(dict)按键和值排序
2016/06/28 Python
Python构建XML树结构的方法示例
2017/06/30 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
大学校务公开实施方案
2014/03/31 职场文书
环保标语口号
2014/06/13 职场文书
商务邀请函
2015/01/30 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript