详解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 相关文章推荐
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
Jan 12 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
js+css实现select的美化效果
Mar 24 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
javascript检测移动设备横竖屏
May 21 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
详解Angular6 热加载配置方案
Aug 18 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
vue中 v-for循环的用法详解
Feb 19 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函数之日期时间函数date()使用详解
2013/09/09 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
百度地图API使用方法详解
2015/08/25 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
Python 正则表达式(转义问题)
2014/12/15 Python
在Python中处理XML的教程
2015/04/29 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
浅谈Python中的bs4基础
2018/10/21 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
硕士生工作推荐信
2014/03/07 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python