forEach的第二个参数有什么用?

今天才知道forEach函数有第二个参数!!!

赶紧来补一下芝士

定义和用法

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。
在这里插入图片描述
这个第二个参数的作用就是:
绑定this指向
头大,直接上代码演示:

var obj = {name: 'nn',gender: 'female',hobbies: [1, 2, 3],print: function () {//这个this为什么指向obj,是语言设计者设计的this.hobbies.forEach(function (n) {console.log(this.name)}, this)}
}
//写成下面的方式好懂一些
var obj = {name: 'nn',gender: 'female',hobbies: [1, 2, 3],print: function () {var that = this//指向obj;this/*指向obj*/.hobbies.forEach(function (n) {console.log(this/*原本指向window,被that绑定到obj,*/.name)}, that/*前面声明了,此处作为参数传入forEach函数*/)}
}
圈起来的是forEach的两个参数,第一个是一个回调函数,在不绑定this的情况下默认指向window,这里的第二个参数用来绑定this指向,这里绑定的this,其实是print的this,也就是obj

在这里插入图片描述
就是把红色的this绑定给了绿色


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部