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