javascript数组遍历for与for in区别详解


Posted in Javascript onDecember 04, 2014

js中遍历数组的有两种方式

var array=['a']

//标准的for循环

for(var i=1;i<array.length;i++){

    alert(array[i])

}

//foreach循环

for(var i in array){

    alert(array[i])

}

正常情况下上面两种遍历数组的方式结果一样。首先说两者的第一个区别

标准的for循环中的i是number类型,表示的是数组的下标,但是foreach循环中的i表示的是数组的key是string类型,因为js中一切皆为对象。自己试试 alert(typeof i);这个区别是小问题。现在我加上如下代码,上面的执行结果就不一样了。

//扩展了js原生的Array

Array.prototype.test=function()

 

}

试试看上面的代码执行什么。我们发现标准的for循环任然真正的对数组循环, 但是此时foreach循环对我刚才写的test方法写打印出来了。这就是for与foreach遍历数组的最大区别,如果我们在项目采用的是用foreach遍历数组,假设有一天谁不小心自己为了扩展js原生的Array类,或者引入一个外部的js框架也扩展了原生Array。那问题就来了。

再此建议两点

1.不要用for in遍历数组,全部统一采用标准的for循环变量数组(我们无法保证我们引入的js是否会采用prototype扩展原生的Array)
2.如果要对js的原生类扩展的时候,不要采用prototype了

Javascript 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
自编jQuery插件实现模拟alert和confirm
Sep 01 Javascript
JavaScript判断数字是否为质数的方法汇总
Jun 02 Javascript
jQuery获取与设置iframe高度的方法
Aug 01 Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 Javascript
MUI实现上拉加载和下拉刷新效果
Jun 30 Javascript
浅谈js中的this问题
Aug 31 Javascript
用vue封装插件并发布到npm的方法步骤
Oct 18 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
ES6基础之默认参数值
Feb 21 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
c#+jquery实现获取radio和checkbox的值
Sep 12 #Javascript
express的中间件cookieParser详解
Dec 04 #Javascript
express的中间件bodyParser详解
Dec 04 #Javascript
express的中间件basicAuth详解
Dec 04 #Javascript
详解JS函数重载
Dec 04 #Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 #Javascript
javascript常用代码段搜集
Dec 04 #Javascript
You might like
php变量范围介绍
2012/10/15 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python处理document文档保留原样式
2019/09/23 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
客户接待方案
2014/02/26 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
租房协议书范本
2014/04/09 职场文书
小学生评语大全
2014/04/18 职场文书
锦旗标语大全
2014/06/23 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python基础学习之奇异的GUI对话框
2021/05/27 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers