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 相关文章推荐
javascript js cookie的存储,获取和删除
Dec 29 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
Javascript数组方法reduce的妙用之处分享
Jun 10 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
微信小程序工具函数封装
Oct 28 Javascript
es6函数之严格模式用法实例分析
Mar 17 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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 工厂模式使用方法
2010/05/18 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
Python实现字符串逆序输出功能示例
2017/06/24 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
pycharm永久激活超详细教程
2020/10/29 Python
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
给海归自荐信的建议
2013/12/13 职场文书
员工培训邀请函
2014/01/11 职场文书
护士检查书
2014/01/17 职场文书
劳动之星获奖感言
2014/02/01 职场文书
优秀护士获奖感言
2014/02/20 职场文书
担保书格式及范文
2014/04/01 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
React更新渲染原理深入分析
2022/12/24 Javascript