关于调动函数加()的问题

关于调动函数加()的问题

这里我想问,为什么在点击事件时候调用的改变图片函数是带()的,changeImg();而鼠标划入时候调用函数却没用(),而是直接stopAutoplay。之前我问过这个问题,那时候说如果需要自动执行就要加(),需要事件带动就不加(),那么在前面点击事件中为什么又加上了()来调动changImg函数?

正在回答 回答被采纳积分+1

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

2回答
好帮手慕星星 2020-04-13 10:06:51

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

1、和event参数没有关系。可以看一下封装的addHandler函数,传入的时间处理函数会直接绑定上,也就是事件触发的时候会立即执行

http://img1.sycdn.imooc.com//climg/5e93c69a09108e2d09940363.jpg

移入事件就是这样的

http://img1.sycdn.imooc.com//climg/5e93c70e09da181c13000157.jpg

而在点击事件中,立即执行的是传入的匿名函数

http://img1.sycdn.imooc.com//climg/5e93c7260941b73313840470.jpg

所以如果想在匿名函数中调用其他函数,是需要加上括号的,否则执行不了。

2、函数中如果需要参数就传入,不需要就不传入

立即执行函数是需要加括号的,这样才能自动触发。如果是事件处理函数,一般不加括号,当事件执行时就会被触发,但是事件处理函数中调用其他函数时是需要加括号的

这两个和优先级没有关系。不确定同学具体想表达的是什么,上面如果没有解决你的疑惑,建议描述具体一些,便于帮助解答。

祝学习愉快!

好帮手慕慕子 2020-04-10 17:48:04

同学你好, 因为点击事件还需要对index进行判断,所以在一个事件函数(function(){})中设置的,然后调用changeImg函数。

函数添加括号确实是立即调用,但是changeImg()放在了点击事件函数内部,会在点击事件被触发时才调用。

鼠标移入事件,只需要停止图片轮播,不需要做其他的操作,所以直接传入函数名stopAutoplay就可以了。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕雪9296518 #1
    就是说函数中的函数还是应该带括号,不过此时事件中的匿名函数应该是没有括号的啊,也是事件调用才执行的。我想是不是因为有event这个参数才存在括号的,那这里我想老师顺便解答一下,有无参数和自动执行对函数括号存在的影响优先级这些知识做下讲解可以吗?
    2020-04-12 20:48:57
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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