详解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 相关文章推荐
JS控制输入框内字符串长度
May 21 Javascript
window.open()实现post传递参数
Mar 12 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
vue.js表格分页示例
Oct 18 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
Vue下拉框回显并默认选中随机问题
Sep 06 Javascript
浅谈Vue.set实际上是什么
Oct 17 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数组添加元素方法小结
2014/12/20 PHP
php中smarty区域循环的方法
2015/06/11 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
jQuery操作css样式
2017/05/15 jQuery
JavaScript门面模式详解
2017/10/19 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
python安装以及IDE的配置教程
2015/04/29 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python内置加密模块用法解析
2019/11/25 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
广告公司文案策划岗位职责
2015/04/14 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript