详解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 相关文章推荐
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
Jan 30 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
js漂浮广告实现代码
Aug 15 Javascript
详解Javascript继承的实现
Mar 25 Javascript
微信小程序三级联动选择器使用方法
May 19 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
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
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
详解Document.Cookie
2015/12/25 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
Python魔法方法详解
2019/02/13 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
一些Solaris面试题
2013/03/22 面试题
希特勒经典演讲稿
2014/05/19 职场文书
黑白记忆观后感
2015/06/18 职场文书
责任书格式
2019/04/18 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
Golang 切片(Slice)实现增删改查
2022/04/22 Golang