详谈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 相关文章推荐
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
Jul 11 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
Java  Spring 事务回滚详解
Oct 17 Javascript
Vue2组件tree实现无限级树形菜单
Mar 29 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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生成Gif图片验证码
2013/10/27 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python -v 报错问题的解决方法
2020/09/15 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
全国道德模范事迹
2014/02/01 职场文书
员工拓展培训方案
2014/02/15 职场文书
教师读书活动总结
2014/05/07 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书