请问大家为什么不能用btnArr[0].onclick=animate(200);这不是函数直接调用吗?
3 回答
已采纳
骑驴的帅小伙
TA贡献16条经验 获得超7个赞
animate(200); //因为后面有括号,所以函数调用了 //没有名字的函数称为匿名函数,内部代码不会执行,因为没调用 function() { //执行代码 注意 我这只是举个例子 匿名函数不能这样直接写 会报错的 } //匿名函数后面跟个括号,会执行内部代码 function() { //执行代码 注意 我这只是举个例子 匿名函数不能这样直接写 会报错的 }(); //然后我们说说事件,事件(onclick)会帮我们调用函数体内部代码 //匿名函数是被事件调用的,他不会自己执行,他不执行,animate(200)也不会执行 //这么写的目的,是想通过按钮的点击,来控制函数的执行 //而不是btnArr[0].onclick=animate(200); 这样会直接调用,事件(onclick)绑定就失去了意义 //所以你图里的代码是有执行顺序的,你再理一理
D调的华丽丽
TA贡献1条经验 获得超1个赞
btnArr[0].onclick = animate(200); 如果直接在函数名之后加() 函数会直接调用,跟事件类型没有关系 btnArr[0].onclick= function(){ animate(200); } 这样写 绑定单击事件是个匿名函数(不能直接调用),必须点击元素才能调用
几核
TA贡献5条经验 获得超3个赞
小括号除了用来传参以外,还用立即执行的意思,故平常不传参的话可写成btnArr[0].onclick=animate;
如果写成btnArr[0].onclick=animate();那么,没等到元素被点击,就会执行animate函数,所以要传参时,将函数写到匿名函数里,避免立即执行。
添加回答
举报
0/150
提交
取消