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 相关文章推荐
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
jQuery布局插件UI Layout简介及使用方法
Apr 03 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
Oct 09 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
javascript执行环境及作用域详解
May 05 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
JQuery和HTML5 Canvas实现弹幕效果
Jan 04 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
JS实现购物车基本功能
Nov 08 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
mac下安装nginx和php
2013/11/04 PHP
使用php清除bom示例
2014/03/03 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
学习PHP session的传递方式
2016/06/15 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
javascript中this的四种用法
2015/05/11 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
Python全局变量操作详解
2015/04/14 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
初级Java程序员面试题
2016/03/03 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
大学自荐信
2013/12/12 职场文书
教师个人剖析材料
2014/02/05 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
运动会的口号
2014/06/09 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS