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的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 Javascript
javascript与jquery中跳出循环的区别总结
Nov 04 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
Dec 03 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
vue的状态管理模式vuex
Nov 30 Javascript
浅谈webpack-dev-server的配置和使用
May 17 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 Javascript
js实现网页版贪吃蛇游戏
Feb 22 Javascript
jquery实现进度条状态展示
Mar 26 jQuery
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
一个ftp类(ini.php)
2006/10/09 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
vue.js表格分页示例
2016/10/18 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
联想中国官方商城:Lenovo China
2017/10/18 全球购物
初三化学教学反思
2014/01/23 职场文书
元宵晚会主持词
2014/03/25 职场文书
竞选村长演讲稿
2014/04/28 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
农民工讨薪标语
2014/06/26 职场文书
客户答谢会活动方案
2014/08/31 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
React 高阶组件HOC用法归纳
2021/06/13 Javascript
Python Matplotlib库实现画局部图
2021/11/17 Python