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 相关文章推荐
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
Jun 23 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
Sep 14 Javascript
JavaScript中Date对象的常用方法示例
Oct 24 Javascript
AngularJS 遇到的小坑与技巧小结
Jun 07 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
一个程序下载的管理程序(一)
2006/10/09 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
nginx 设置多个站跨域
2021/03/09 Servers
extjs fckeditor集成代码
2009/05/10 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python网络爬虫实例讲解
2016/04/28 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python集合常见运算案例解析
2019/10/17 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
测试工程师岗位职责
2013/11/28 职场文书
学校安全教育制度
2014/01/31 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
大学生实习证明范本
2014/09/19 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
放飞理想主题班会
2015/08/14 职场文书
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
nginx配置指令之server_name的具体使用
2022/08/14 Servers