通过实例解析JavaScript for in及for of区别


Posted in Javascript onJune 15, 2020

对数组的遍历大家最常用的就是for循环,ES5的话也可以使用forEach,ES5具有遍历数组功能的还有map、filter、some、every、reduce、reduceRight等,只不过他们的返回结果不一样。但是使用foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。

那么接下来我们一起看一下for in 和for of 的区别吧。

for in

看一个简单的例子

//for in 应用于数组
Array.prototype.sayHello = function(){
  console.log("Hello")
}
Array.prototype.str = 'world';
var myArray = [1,2,10,30,100];
myArray.name='数组';
 
for(let index in myArray){
  console.log(index);
}
//输出结果如下
0,1,2,3,4,name,str,sayHello
 
//for in 应用于对象中
Object.prototype.sayHello = function(){
  console.log('Hello');
}
Obeject.prototype.str = 'World';
var myObject = {name:'zhangsan',age:100};
 
for(let index in myObject){
  console.log(index);
}
//输出结果
name,age,str,sayHello
//首先输出的是对象的属性名,再是对象原型中的属性和方法,
//如果不想让其输出原型中的属性和方法,可以使用hasOwnProperty方法进行过滤
for(let index in myObject){
  if(myObject.hasOwnProperty(index)){
    console.log(index)
  }
}
//输出结果为
name,age
//你也可以用Object.keys()方法获取所有的自身可枚举属性组成的数组。
Object.keys(myObject)

可以看出for in 应用于数组循环返回的是数组的下标和数组的属性和原型上的方法和属性,而for in应用于对象循环返回的是对象的属性名和原型中的方法和属性。

使用for in 也可以遍历数组,但是会存在以下问题:

1.index索引为字符串型数字,不能直接进行几何运算

2.遍历顺序有可能不是按照实际数组的内部顺序

3.使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

Object.prototype.sayHello = function(){
  console.log('Hello');
}
var myObject = {
  name:'zhangsan',
  age:10
}
 
for(let key of myObject){
  consoloe.log(key);
}
//输出结果
//typeError
 
Array.prototype.sayHello = function(){
  console.log("Hello");
}
var myArray = [1,200,3,400,100];
for(let key of myArray){
  console.log(key);
}
//输出结果
1,200,3,400,100

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 所以for in更适合遍历对象,不要使用for in遍历数组。JavaScript for in 和 for of 的区别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery优缺点分析说明
Apr 10 Javascript
解析jQuery与其它js(Prototype)库兼容共存
Jul 04 Javascript
Javascript模块化编程详解
Dec 01 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
JQuery实现图片轮播效果
Sep 15 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 Javascript
js前端面试题及答案整理(一)
Aug 26 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 Javascript
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
vue proxy 的优势与使用场景实现
Jun 15 #Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 #Javascript
koa中间件核心(koa-compose)源码解读分析
Jun 15 #Javascript
为react组件库添加typescript类型提示的方法
Jun 15 #Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 #Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 #Javascript
浅谈Vue 自动化部署打包上线
Jun 14 #Javascript
You might like
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
Bootstrap基础学习
2015/06/16 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中的函数用法入门教程
2014/09/02 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python制作简单的网页爬虫
2015/11/22 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python 类的继承实例详解
2017/03/25 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
教师自荐书
2013/10/08 职场文书
幼儿园教师备课制度
2014/01/12 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
学校就业保障协议书
2019/06/24 职场文书