forEach的第一个参数

  • 接收回调函数
let a = ['a', 'b', 'c'];
a.forEach((v, k ,s)=>{console.log(v, k ,s);console.log(this);
})
  • v: value
  • k: key
  • s: 代表数组a本身
  • this指向当前函数执行所在的作用域,即window

forEach的第二个参数.

  • forEach第1个参数用于接收回调函数,第2个参数用于改变函数的作用域
let a = ['a', 'b', 'c'];
a.forEach(function(v, k ,s){console.log(this);
}, a)// 此时回调函数未使用箭头函数.因为箭头函数的作用域在声明时就固定了.而function声明的函式会随调用环境的改变而改变

实现

  • 自定义forEach函数,
  • 第一个参数接收数组
  • 第二个参数接收回调函数,相当于forEach中的第一个参数
  • 第三个参数接收作用域,相当于forEach中的第二个参数
function forEach(arr, cb, ctx){for(let i = 0; i < arr.length; i++){cb.call(ctx, arr[i], i, arr);}
}
let arr = ['a','b','c'];
forEach(arr, function(k ,v ,s){console.log(k, v, s);console.log(this)
}, arr)

es6 --- forEach的实现相关推荐

  1. es6 - foreach

    foreach ... 1 // es5 - foreach 2 arr.forEach(function(value, index, arr) { 3 console.log(value, inde ...

  2. es6 forEach/map循环中断

    1.for循环在循环的时候 通过continue中断当次循环 通过break中断整个循环 通过retrun中断函数执行 2.es6的forEach/map循环只能通过return中断当次循环 //目的 ...

  3. chararray遍历_数组常用的遍历方法 ——总结

    看图了解数组常用的方法 前言 本文主要介绍数组常见遍历方法:forEach.map.filter.find.every.some.reduce,它们有个共同点:不会改变原始数组. 一.forEach: ...

  4. web 前端学习线路图

    web 前端学习线路图 一.HTML 教程 HTML教程 HTML简介 HTML编辑器 HTML基础 HTML元素 HTML属性 HTML标题 HTML段落 HTML样式 HTML格式化 HTML引用 ...

  5. 浏览器适配IE浏览器问题

    提示:文章写完后, 目录 文章目录 前言 一.es6转换es5在线工具 二.IE不兼容问题 1.es6 forEach 转 es5 for 2. Array.from在ie上面不兼容 3. IE 不兼 ...

  6. 前端面试题个人汇总(精简知识要点 总结话术) / 前端小知识 保持学习 (年终奖年终奖 心心念念年终奖)

    基础知识(学校里学过的那种) 浏览器IP寻址到到页面渲染完成的过程 1.浏览器构建请求 1.1 DNS域名解析寻找ip 浏览器缓存→系统缓存→运营商缓存→根DNS服务器 1.2 在应用层封装http ...

  7. [学习笔记] ES6的数组遍历方式 for, forEach,for...in, for...of

    javascript ES6有如果要遍历一个数组,我们有多个方式可以进行. 下面我们来分析一下各自的利弊. for循环 const langs = ['java', 'php', 'c++', 'py ...

  8. 2.0 es6中forEach以及数组操作

    前言: 小白的js之路...... 1. 遍历数组/集合 forEach usernameArray = []; //遍历 users.forEach((user, index) => {let ...

  9. js es6数组常用方法:forEach map filter find every

最新文章

  1. TOAD FOR MYSQL 进行数据插入时乱码的解决办法---MariaDB 5.5
  2. git push 如何同时推送至两个git仓库
  3. python画笑脸-python 学习笔记——学会用turtle画笑脸
  4. CompletableFuture详解~allOf
  5. Linux进阶之路————组管理与权限管理
  6. 大学计算机网络期末重点,中南大学计算机网络期末复习重点
  7. (转)shiro权限框架详解01-权限理论介绍
  8. 计算机网络误区——源目IP和源目MAC变化问题
  9. lisp把多段线顶点连成表_读取多段线顶点并将顶点坐标标到数组中
  10. Golang(3)CentOS7系统安装Go语言
  11. [洛谷1359] 租用游艇
  12. 怎么把png格式图片转换成jpg格式?
  13. 如何把标签输出为PDF文件
  14. ExtJS各个版本官方API文档
  15. android 高光动画,InstrumentPanelView
  16. Linux 用户管理及用户权限设置
  17. 一次制作U盘启动盘并安装WIN7系统的经历
  18. 很多人都想做到却只能看别人做到的:自律
  19. 树莓派ubuntu换源
  20. 模板模式(Template)-水泥厂订货

热门文章

  1. vs 窗体连接mysql_vs2008 c#开发windows窗体程序,怎么连接数据库?
  2. 电脑微信不用手机确认_不用安装第三方软件,手机投屏到电脑就这么简单
  3. c语言获取系统剩余内存_C语言编程中的“堆”和“栈”七大不同之处
  4. C#委托(delegate、Action、Func、predicate)和事件
  5. 1.3 Go语言基础之数据类型
  6. liunx驱动----异步通知
  7. zabbix 从入门到精通
  8. tortoisegit推送ssh-key需要输入用户信息
  9. [转]c++类的构造函数详解
  10. XtraBackup全备与增量备份