通过实例解析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 相关文章推荐
JS中style属性
Oct 11 Javascript
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
jquery 1.4.2发布!主要是性能与API
Feb 25 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
js实现编辑div节点名称的方法
Dec 17 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
JavaScript重定向URL参数的两种方法小结
Oct 19 Javascript
vue.js实现含搜索的多种复选框(附源码)
Mar 23 Javascript
浅谈pc端rem字体设置的问题
Aug 03 Javascript
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
其他功能
2006/10/09 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
jQuery轮播图实例详解
2018/08/15 jQuery
layui table单元格事件修改值的方法
2019/09/24 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
工程质量承诺书
2014/03/27 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
大学生求职信例文
2014/06/29 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
保护地球的宣传语
2015/07/13 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技