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 相关文章推荐
Prototype使用指南之selector.js说明
Oct 26 Javascript
学习ExtJS Column布局
Oct 08 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
JS编程小常识很有用
Nov 26 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
js获取字符串字节数方法小结
Jun 09 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
jQuery实现滚动效果
Nov 17 jQuery
Vue高版本中一些新特性的使用详解
Sep 25 Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
浅析php与数据库代码开发规范
2013/08/08 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
php自动加载方式集合
2016/04/04 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
HTML的select控件美化
2017/03/27 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
python中enumerate的用法实例解析
2014/08/18 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
Django forms组件的使用教程
2018/10/08 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python列表的逆序遍历实现
2020/04/20 Python
详解Python中的文件操作
2021/01/14 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
nohup的用法
2012/11/26 面试题
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
详解Laravel制作API接口
2021/05/31 PHP
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js