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的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
js实现可拖动DIV的方法
Dec 17 Javascript
Jquery 效果使用详解
Nov 23 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
JS实现数组按升序及降序排列的方法
Apr 26 Javascript
Angular directive递归实现目录树结构代码实例
May 05 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
Aug 20 Javascript
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
微信小程序实现上拉加载功能
Nov 20 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 Javascript
js实现详情页放大镜效果
Oct 28 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
php 团购折扣计算公式
2011/11/24 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
js数组的操作指南
2014/12/28 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Python对切片命名的实现方法
2018/10/16 Python
Python列表(List)知识点总结
2019/02/18 Python
Python包和模块的分发详细介绍
2020/06/19 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
建筑个人求职信范文
2014/01/25 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
华清池导游词
2015/02/02 职场文书
热血教师观后感
2015/06/10 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python