详谈js中标准for循环与foreach(for in)的区别


Posted in Javascript onNovember 02, 2017

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。那问题就来了。再此建议两点

不要用for in遍历数组,全部统一采用标准的for循环变量数组( 我们无法保证我们引入的js是否会采用prototype扩展原生的Array )

如果要对js的原生类扩展的时候,不要采用prototype了

以上这篇详谈js中标准for循环与foreach(for in)的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中为某个元素指定事件的三种方式
Aug 07 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
Aug 11 Javascript
完美解决浏览器跨域的几种方法(汇总)
May 08 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
May 02 Javascript
如何提升vue.js中大型数据的性能
Jun 21 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
jQuery实现弹幕特效
Nov 29 jQuery
JS 数组基本用法入门示例解析
Jan 16 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
Nov 02 #Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
Nov 02 #Javascript
vue-resource + json-server模拟数据的方法
Nov 02 #Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 #Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 #Javascript
vue项目中使用axios上传图片等文件操作
Nov 02 #Javascript
JavaScript登录验证基础教程
Nov 01 #Javascript
You might like
用PHP查询域名状态whois的类
2006/11/25 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php解析json数据实例
2014/08/19 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
javascript常用功能汇总
2015/07/05 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
详解python变量与数据类型
2020/08/25 Python
献爱心倡议书
2014/04/14 职场文书
美食节策划方案
2014/05/26 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
工厂标语大全
2014/10/06 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
公司宣传语大全
2015/07/13 职场文书
靠谱准确的求职信
2019/04/02 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript