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的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
JQuery显示隐藏页面元素的方法总结
Apr 16 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
Bootstrap Scrollspy源码学习
Mar 02 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
JS中准确判断变量类型的方法
Jun 01 Javascript
js实现扫雷源代码
Nov 27 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
php strtotime 函数UNIX时间戳
2009/01/14 PHP
php adodb介绍
2009/03/19 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Python eval函数原理及用法解析
2020/11/14 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
简单叙述一下MYSQL的优化
2016/05/09 面试题
Java模拟试题
2014/11/10 面试题
夏季奶茶店创业计划书
2014/01/16 职场文书
社区先进事迹材料
2014/05/19 职场文书
电影建党伟业观后感
2015/06/01 职场文书
聘任通知书
2015/09/21 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技