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 相关文章推荐
jquery $.ajax入门应用二
Nov 19 Javascript
JavaScript 基础问答三
Dec 03 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
Sep 07 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
javascript实现二叉树遍历的代码
Jun 08 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 Javascript
详解js获取video任意时间的画面截图
Apr 17 Javascript
vue 递归组件的简单使用示例
Jan 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
多广告投放代码 推荐
2006/11/13 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
Python实现批量检测HTTP服务的状态
2016/10/27 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
python实现中文文本分句的例子
2019/07/15 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
毕业大学生自荐信
2014/06/17 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
教师节倡议书2015
2015/04/27 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
房产证明范本
2015/06/19 职场文书
矛盾论读书笔记
2015/06/29 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫