为了账号安全,请及时绑定邮箱和手机立即绑定

函数的直接调用

函数的直接调用

慕勒小柒 2017-08-06 17:59:39
请问大家为什么不能用btnArr[0].onclick=animate(200);这不是函数直接调用吗?
查看完整描述

3 回答

已采纳
?
骑驴的帅小伙

TA贡献16条经验 获得超7个赞

animate(200);  //因为后面有括号,所以函数调用了

//没有名字的函数称为匿名函数,内部代码不会执行,因为没调用
function() {
    //执行代码  注意  我这只是举个例子  匿名函数不能这样直接写  会报错的
}

//匿名函数后面跟个括号,会执行内部代码
function() {
    //执行代码  注意  我这只是举个例子  匿名函数不能这样直接写  会报错的
}();

//然后我们说说事件,事件(onclick)会帮我们调用函数体内部代码
//匿名函数是被事件调用的,他不会自己执行,他不执行,animate(200)也不会执行
//这么写的目的,是想通过按钮的点击,来控制函数的执行
//而不是btnArr[0].onclick=animate(200);  这样会直接调用,事件(onclick)绑定就失去了意义
//所以你图里的代码是有执行顺序的,你再理一理


查看完整回答
1 反对 回复 2017-08-06
?
D调的华丽丽

TA贡献1条经验 获得超1个赞

btnArr[0].onclick = animate(200);   如果直接在函数名之后加()   函数会直接调用,跟事件类型没有关系     btnArr[0].onclick= function(){ animate(200); }   这样写  绑定单击事件是个匿名函数(不能直接调用),必须点击元素才能调用   

查看完整回答
1 反对 回复 2017-08-06
?
几核

TA贡献5条经验 获得超3个赞

小括号除了用来传参以外,还用立即执行的意思,故平常不传参的话可写成btnArr[0].onclick=animate;
如果写成btnArr[0].onclick=animate();那么,没等到元素被点击,就会执行animate函数,所以要传参时,将函数写到匿名函数里,避免立即执行。

查看完整回答
1 反对 回复 2017-08-06
  • 3 回答
  • 0 关注
  • 1797 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信