关于arguments的问题?需要给我的问题连续看,代码里面都有

关于arguments的问题?需要给我的问题连续看,代码里面都有

http://img1.sycdn.imooc.com//climg/600bc3f109e0eed911610595.jpg

为什么这里a+b不出答案,而是object,如果用fn()​,打印出来又出现NAN,为什么?这都是为了研究arguments研究出来的新问题,希望一解百解!

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,问题解答如下:

1、在之前的问题中,老师和同学说过,debounce返回的匿名函数是addEventListener的第二个参数,所以它表示的是一个事件函数。在事件函数中,只有一个参数,那么就是事件对象。如果我们自己定义参数去传递是没有任何意义的。可以参考如下理解:

事件函数只有一个参数,即事件对象event

http://img1.sycdn.imooc.com//climg/600bccad09a3473405470087.jpg

2、同学所写的代码中,可以参考如下理解:

第一个参数a表示event对象,而事件对象不会再有其他参数了,所以b为undefined。

http://img1.sycdn.imooc.com//climg/600bcdaf0948dbf306110480.jpg

可以输出一下a和b验证一下:

http://img1.sycdn.imooc.com//climg/600bcde309bc1a0603180109.jpg

http://img1.sycdn.imooc.com//climg/600bcdfa098a8b9f10610087.jpg

3、a+b则为event对象与undefined的运算,所以会出现如下结果:

[object KeyboardEvent]就是event对象,它在计算时,被自动转换为了字符串格式。

http://img1.sycdn.imooc.com//climg/600bce2d0930ccd103950062.jpg

4、如果改成fn(),则没有传入任何参数,那么两个参数都为undefined,undefined与undefined相加结果为NaN。

5、自己可以记一下,事件函数只有一个参数,即event对象。这个参数是默认的,即使我们不去定义,当事件触发的时候,是默认就有的,我们可以直接拿来用。所以自己传递参数没有任何意义,不要这样去做。

祝学习愉快~


  • 慕田峪6263377 提问者 #1

    原来如此,这些不经过研究怎么会知道,总以为函数里传参数是可以的,看了这么多课,也没有听到有这样的说法,编程肯定会放开思想,这也有利于理解其中原理,谢谢!


    2021-01-23 16:23:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师