通过实例解析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 isEmptyObject判断是否为空对象的函数
Feb 14 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
js实现简单的验证码
Dec 25 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
老生常谈原生JS执行环境与作用域
Nov 22 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 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
PHP If Else(elsefi) 语句
2013/04/07 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
JavaScript实现图片放大预览效果
2020/11/02 Javascript
Python可变参数用法实例分析
2017/04/02 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python 实现微信防撤回功能
2019/04/29 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
python实现微信打飞机游戏
2020/03/24 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
《唯一的听众》教学反思
2014/02/20 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
会员活动策划方案
2014/08/19 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
教师个人事迹材料
2014/12/17 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书