详解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 mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
详解Webwork中Action 调用的方法
Feb 02 Javascript
在Node.js中使用Javascript Generators详解
May 05 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
JS排序之冒泡排序详解
Apr 08 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
Apr 01 Javascript
一步步教会你微信小程序的登录鉴权
Apr 09 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
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
dedecms模板标签代码官方参考
2007/03/17 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
如何利用find命令查找文件
2015/02/07 面试题
钳工实习自我鉴定
2013/09/19 职场文书
建筑工程技术应届生求职信
2013/11/17 职场文书
经营理念口号
2014/06/21 职场文书
幼儿园辞职信
2015/05/13 职场文书
离职证明范本
2015/06/12 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript