详解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 相关文章推荐
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
vue-router实现嵌套路由的讲解
Jan 19 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
小程序登录之支付宝授权的实现示例
Dec 13 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
用php来检测proxy
2006/10/09 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
php实现登录页面的简单实例
2019/09/29 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python实现统计代码行的方法分析
2017/07/12 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python异常处理操作实例详解
2018/05/10 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
酒吧副总经理岗位职责
2013/12/10 职场文书
园林施工员岗位职责
2013/12/11 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
单位病假条范文
2015/08/17 职场文书