关于闭包中的函数有没有return的问题

图片说明
图片说明
上面的两个图唯一区别就是第10行11行,学完闭包 我能看懂图二为什么对的原因。 但是我不知道图1第11行没有return function {}为什么错.....
两者区别我还看不出来,来个大神讲一下吧

1个回答

图1是执行匿名函数后直接设置行的背景色,然后将匿名函数的返回值,注意是返回值作为onmouseover的处理函数

你的匿名函数没有返回值,所以默认返回undefined作为onmouseover的事件处理函数了,没有处理函数

图二你是执行匿名函数后返回了一个函数,所以onmouseover有处理事件,只有移动到对应的行才会着色

showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复小羊也疯狂: 对的。。
3 年多之前 回复
qflyalltime
小羊也疯狂 回复showbo:有点懂了,这里蛮容易出错,我按我的理解说一遍,您看对不对。第一个图,匿名函数立即执行,执行的就是着色,onclick绑定的是返回的undefine。 第二个图。匿名函数立即执行,执行的就是返回一个涂色函数,然后再把这个返回的函数绑定在相应事件上
3 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复小羊也疯狂: 第二个的匿名函数执行后是直接返回了另外一个匿名函数,所以有返回值作为mouseover处理函数。2个都是执行匿名函数,第一个是直接设置了背景色,返回undefined,第二个是返回匿名函数,返回的匿名函数引用了执行的匿名函数的参数,所以才形成了闭包,没有释放当前i的值
3 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复小羊也疯狂: 你是执行了匿名函数了啊,匿名函数代码体不是设置了背景色。由于没有return返回内容默认就是返回了undefined。等价于这个。var returnValue=(function(num{trs[nu].......})(i);trs[i].onmouseover=returnValue;
3 年多之前 回复
qflyalltime
小羊也疯狂 但是我的第一个图是刷新页面就都变红了, 绑定返回值undefined应该是没得反应才对啊
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问