老师我这理解的正确吗?还有一些问题。。
来源:2-4 选择练习
聪U
2021-04-15 16:04:43
问题描述:
该题中因为s.forEach()中是箭头函数,因为箭头函数没有自己的this,所以要根据作用域链查找自己所定义时的作用域,虽然第二个参数指定this指向obj对象,但是由于箭头函数没有自己的this问题,导致第二个参数没有实际效果,最终this指向全局作用域window。
但是如果题目修改成一般函数(如下图1),此时作为匿名回调函数受s.forEach()调用执行时形成函数作用域,此时this指向为什么不是指向这个集合s。而且通过"严格模式"发现this先指向undefined-->window。还有一个就是定时器和延时器和这个形式一样(如图2),无论是严格模式还是非严格模式都是直接指向window,这是为什么呢?
相关截图:
相关截图:
1回答
同学你好,解答如下:
1、如下理解是对的:
2、forEach是js为我们封装好的一个方法,它提供了第二个参数,利用该参数,可以让内部this指向s:
如果没有传入第二个参数,那么该参数默认是undefined,即不传第二个参数时,forEach第一个回调函数中的this指向undefined,非严格模式下,转而指向window。
3、定时器、延时器也是同理,它们的this规定指向window。
js中,有一些内容是规定好的,有些甚至没有原因,就是那么规定的,我们记住规定,按照规定来使用就行。
上面两个this,同学记住即可。
祝学习愉快!
相似问题