这里有两个地方想不明白是怎么回事?
第一个是return,如果不返回呢?为什么一定要返回,这里是什么原理,
第二个是fn.apply(this,..),这里是this又是谁?直接用fn()还能理解,但这样改一下就不知道原理了,请老师详细的指教,特别是关于函数返回,我总感觉不好理解,之前讲到的第一种闭包是把函数return出来,外面另起一个变量接受,然后再打()调用,那样也能理解,包括把函数作为参数形式的闭包都能理解,但这里我想不清楚!谢谢老师先!
正在回答 回答被采纳积分+1
同学你好,要仔细看一下第二个参数是加括号调用了,如下:
老师给你举一个小例子,帮助你去理解,如下:
1、如果按照同学所说的,第二个参数本身是一个函数,那除非它不调用。如下:
这样第二个参数才是deb函数,当事件触发的时候,才会执行它。如下:
2、而当函数加括号调用之后,页面打开的时候就会自动执行了。函数执行完毕,会默认返回undefined,所以第二个参数相当于undefined。
如下页面打开的时候,deb就自动执行了。当点击元素的时候,因为第二个参数绑定的是undefined,所以什么都没有触发。
3、根据第二条,当调用函数之后,需要自己设置一个函数作为返回值,这样第二个参数才是函数哦。
这里建议同学不要光看视频,一定要把例子多练习几遍,多思考,多测试,这样才能帮助你更好的理解与学习。
祝学习愉快~
同学你好,问题解答如下:
1、如果不返回函数,那么函数默认返回的是undefined。即如下绑定事件时,addEventListener的第二个参数是undefined,所以不对。
一定要返回一个函数就是因为addEventListener去绑定事件的时候,第二个参数需要是一个事件处理函数。而代码中直接调用了debounce,所以页面打开的时候会自动执行,然后返回结果。即返回一个函数,就是addEventListener的第二个参数。
2、可以记住一句话,this指向函数的调用者。所以顺着这个思路,去找一下this在哪个函数里面,而这个函数又是谁调用的。老师给你讲解一下,以后可以按照这个思路自己去思考哦。如下:
这个this本来是在箭头函数中,但是箭头函数和普通的function函数不一样,不是在调用时绑定的this,而是在创建时绑定的。
箭头函数是在返回的匿名函数中创建的,所以箭头函数中这个this,绑定的就是匿名函数中的this,即我们看匿名函数是谁调用的即可。
而第一条的时候老师说了,addEventListener的第二个参数就是这个匿名函数,它作为事件的事件函数。而事件是input1绑定的,所以input1触发了事件函数,最终这个this指向的就是input1。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星