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 相关文章推荐
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
javascript实现面向对象类的功能书写技巧
Mar 07 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
详解angular中如何监控dom渲染完毕
Jan 03 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
vue2.0结合Element实现select动态控制input禁用实例
May 12 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
vue-ajax小封装实例
Sep 18 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 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
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python3抓取中文网页的方法
2015/07/28 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
篮球赛新闻稿
2015/07/17 职场文书
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android