详谈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 相关文章推荐
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 Javascript
JQuery以JSON方式提交数据到服务端示例代码
May 05 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
Mar 05 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
解决修复npm安装全局模块权限的问题
May 17 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 Javascript
小程序接口的promise化的实现方法
Dec 11 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
Prototype Number对象 学习
2009/07/19 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
Python对文件操作知识汇总
2016/05/15 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python 元组的使用方法
2020/06/09 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
考试不及格检讨书
2014/01/09 职场文书
入党积极分子评语
2014/05/04 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
检讨书模板大全
2015/05/07 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python