for...in和for...of循环的区别
使用for...in和for...of分别对Array,Set,Map做测试
var a=["A","B","C"];
var b=new Set(["A","B","C"]);
var c=new Map([1,'x'],[2,'y'],[3,'z']);
//遍历数组
for(var i of a){
alert(i)//拿到的是值A B C
}
for(var i in a){
alert(i)//拿到的是下标0 1 2
}
//遍历Set集合
for(var i of b){
alert(i);拿到Set集合每个元素的值
}
for(var i in b){
alert(i);//不起作用,不能使用for...in循环Set集合
}
//遍历Map集合
for(var i of c){
alert(i[0]+"="+i[i]);//既可以拿到键也可以拿到值
}
for(var i in c){
alert(i[0]+"="+i[i]);//for...in循环不能用于Map
}
for...in由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组也是一个对象,数组中的每个元素的索引被视为属性名称,所以我们可以看到使用for...in循环Array数组时,拿到的其实是每个元素的索引。
var a=['A','B','C'];
a.name='Hello';
for (var i in a){
alert(i);//'0','1','2','name'
}
如上所示,当我们为a多手动添加一个属性name的时候,for...in循环会把name属性也包括在内,而Array的length属性却不包括在内。
for...of循环则不存在上述的问题,它只循环集合本身的元素。这就是为什么引入for...of循环。
for...in和for...of循环的区别的更多相关文章
- do while 循环和while循环的区别
		do while 循环和while循环的区别 1.do while循环是先执行循环体,然后判断循环条件,如果为真,则执行下一步循环,否则终止循环: while循环是先判断循环条件,如果条件为真则 ... 
- python中生成器对象和return 还有循环的区别
		python中生成器对象和return 还有循环的区别 在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因 ... 
- [shell] while read line 与for循环的区别
		[shell] while read line 与for循环的区别 while read line 与for循环的区别---转载整理 while read line 是一次性将文件信息读入并赋值给变量 ... 
- [转载]Java迭代器(iterator详解以及和for循环的区别)
		Java迭代器(iterator详解以及和for循环的区别) 觉得有用的话,欢迎一起讨论相互学习~[Follow] 转载自 https://blog.csdn.net/Jae_Wang/article ... 
- Node.js  event loop 和 JS 浏览器环境下的事件循环的区别
		Node.js event loop 和 JS 浏览器环境下的事件循环的区别: 1.线程与进程: JS 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程? 进程是 CPU ... 
- js之for与forEach循环的区别
		回武汉打卡第四天,武汉加油,逆战必胜!今天咱们探讨一下for循环和forEach()循环的区别. 首先,for循环在最开始执行循环的时候,会建立一个循环变量i,之后每次循环都是操作这个变量,也就是说它 ... 
- for循环,for…in循环,forEach循环的区别
		for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ... 
- for, for in,  for of, map, forEach 循环的区别:
		for, for in, for of, map, forEach 循环的区别: for 遍历数组: //对象遍历数组 var arr = [ {Monday: '星期一', Tuesday: ' ... 
- do-while循环和三种循环的区别
		循环语句3--do...while do...while循环格式 初始化表达式① do{ 循环体③ 步进表达式④ }while(布尔表达式②); 执行流程 执行顺序:①③④>②③④>②③④ ... 
- for ,foreach ,map 循环的区别
		一.for循环 1.for - 循环代码块一定的次数 遍历数组最常用到的for循环,是最为熟知的一种方法 for (var i=0; i<5; i++) { x=x + "The nu ... 
随机推荐
- Codeforces 866C Gotta Go Fast - 动态规划 - 概率与期望 - 二分答案
			You're trying to set the record on your favorite video game. The game consists of N levels, which mu ... 
- Zabbix poller processes more than 75% busy
			Centos7.5 在设置网络监控的时候zabbix提示Zabbix poller processes more than 75% busy 问题 原因 默认只开启一个Discoverers进程,就 ... 
- 前端 ---   7   Bootstrop框架
			一.基本结构 1.下载地址 官方地址:https://getbootstrap.com 中文地址:http://www.bootcss.com/ 2.HTML基本搭建结构 <!DOCTYPE ... 
- P3899 [湖南集训]谈笑风生
			题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3653 https://www.luogu.org/problemnew/show/P38 ... 
- 洛谷luogu2782
			P2782 友好城市 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申 ... 
- 大明A+B(大数相加)解题报告
			Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ... 
- sql server查看用户权限
			System.ServiceModel.FaultException: Server error. Detail: The EXECUTE permission was denied on the o ... 
- P3727 曼哈顿计划E
			点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?当然是打表了 然后各种 ... 
- (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)
			干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ... 
- (转载)MySQL用命令行复制表的方法
			mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 ; 或 CREATE TABLE 新表 LIKE 旧表 ; 注意上面两种方式,前一种方式是不会复制时的主键类型和自增方式是 ... 
